gpt4 book ai didi

database - Doctrine Query Builder 不适用于 UPDATE 和 INNER JOIN

转载 作者:太空狗 更新时间:2023-10-30 01:46:23 26 4
gpt4 key购买 nike

在我的存储库中我有这个查询:

$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->update('MyBundle:Entity1', 'e1')
->join('e1.Entity2', 'e2')
->set('e1.visibile', '1')
->andWhere('e2.id = :id')->setParameter("id", 123)
;

抛出这个错误

[Semantical Error] line 0, col 66 near 'e2.id = :id': Error: 'e2' is not defined

我检查了关系,是正确的。使用 join in query update 有什么问题吗?

最佳答案

您不能对更新和删除查询使用连接。你必须使用子查询。

Joins are not supported on update and delete queries because it is not supported on all dbms. It won't be implemented in Doctrine 1 or Doctrine 2. You can however get the same affect by using subqueries.

http://www.doctrine-project.org/jira/browse/DC-646

如果您使用的是 MySQL,则无法使用子查询。然后您将不得不使用 2 个查询。

In MySQL, you cannot modify a table and select from the same table in a subquery

http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

关于database - Doctrine Query Builder 不适用于 UPDATE 和 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com