阅读文档的底部,特别是:
“您仍然可以检索已删除对象的属性,但无法保存已删除对象。”
如何?是否只有启用设置?
已删除的对象只是在数据库中被删除并标记为被删除。您仍然可以在 php 中访问它,例如向用户显示一些再见数据(“产品 XYZ 已删除”)。
我认为“对象”指的是已经加载到内存中的对象。它是说您仍然可以查看它的属性,但是如果您尝试调用 save 它将尝试执行一个 UPDATE SQL 语句,该语句将失败,因为该记录实际上已被删除。
我对 Propel 的确切工作原理不是很熟悉。但重要的是要了解数据库(MySQL)和 ORM 层(Propel)之间的区别。Propel 是一种抽象,它通过将数据库中的行包装在对象中来表示它们。然后,您可以通过调用相应对象的方法来更改或删除这些行,Propel 将生成并执行所需的 SQL 语句。
因此,在执行 SQL DELETE 语句之后,对象包装器仍将保存在删除行之前加载的数据。但是它将不再允许您修改行数据,因为 Propel 没有地方可以将这些更改写入。