也许有人知道。我想使用citusdb并尝试重写教义更新。如果我对实体使用标准更新例如
$order = $repository->find(1);
$human->setComment("test");
$entityManager->flush();
此代码创建查询Updates
订单SET
评论= "test" WHERE id = 1;
citusdb中的分片我选择了used_id字段。此字段存在于所有表中。
我需要接收Updates
订单SET
评论= "test" WHERE id = 1 and user_id = 5;
我试着加上
$order = $repository->find(1);
$human->setComment("test");
$human->setUserId(5);
$entityManager->flush();
但是如果user_id不改变原则,则从sql中删除此字段。
我在教义中读到了preUpdate,prePost事件,也许这可以帮助解决我的任务。但是我不知道如何=(
1条答案
按热度按时间toiithl61#
在使用Doctrine和CitusDB进行基于user_id字段的分片时,要实现在更新查询中包含user_id字段的任务,可以利用Doctrine的事件和生命周期回调。
下面是一个如何实现它的示例:
创建一个Doctrine事件订阅者类来监听preUpdate事件:
现在,当你更新你的实体时,你可以设置user_id字段,Doctrine会把它包含在更新查询中,即使值保持不变。