假设有实体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)
。