Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我发现当我将教义实体传递给我们的 PHP 模板时,设计人员可以开始调用 setter 并更改数据。这通常没什么大不了的,除了有执行子请求的页面,因此控制器可以看到这些更改并有可能保存到数据库中(身份映射模式返回对象而不是从存储中刷新)!
有什么方法可以防止模板更改数据?
(我在传递实体之前尝试过分离实体,但这使得原则代理不返回数据。我真的不想失去延迟加载)
考虑使用延迟显式更改跟踪策略:
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html
只有您明确保留的实体才会被考虑更新。因此,在模板中完成的附带更新将不会被保存。
我想您也可以尝试通知策略,并通过一些魔术禁用通知发件人以使您的实体基本上是只读的。