如何在Doctrine中锁定整个ManyToOne关系

时间:2017-03-19 23:47:03

标签: doctrine-orm orm

假设有实体Product。关系设置如下:

Product --1:N--> ImageLink <--N:1-- Image

这样的设置用于允许向关系添加更多信息 - 谁链接图像,何时等。ImageLink的一个属性也是isMainImage(bool)。这表示这一个特定ImageLink包含我们想要显示为产品主图像的图像。

当我想设置产品的主图像时,我需要将所有ImageLinks设置为false,除了我想要设置为main的那个。我从Product - $product->getImageLinks()检索链接。这将从DB获取所有ImageLinks条目并将它们转换为对象。我将遍历所有这些并为isMainImage设置正确的值。然后我刷新实体管理器。

在此期间,有人可能会添加新图像并将其标记为主图像。该图像未从DB中选择,未转换为对象。所以是没有设置为假。因此在冲洗期间不会更改。

现在我有两个主要图像。我该如何解决这个问题?

如果没有ORM,我会在一个数据库查询中更新图像,例如UPDATE image_link SET is_main = IF(id = 13, 1, 0)

0 个答案:

没有答案