原则2更新与左键加入 [英] Doctrine 2 UPDATE with LEFT JOIN
本文介绍了原则2更新与左键加入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
SELECT - 没错,没有错误
SELECT - all right, no errors
$em = $this->get('doctrine.orm.entity_manager');
$query = $em->createQuery("
SELECT c
FROM MyDemoBundle:Category c
LEFT JOIN c.projects p
WHERE c.isActive = true
AND p.id = 1
");
$result = $query->getResult();
更新 - 异常[语义错误]
$query = $em->createQuery("
UPDATE MyDemoBundle:Category c
LEFT JOIN c.projects p
SET c.isActive = false
WHERE p.id = ?1
");
$query->setParameter(1, $id);
$query->execute();
推荐答案
LEFT JOIN,或JOINs MySQL的UPDATE语句。 DQL抽象一个常见的ansi sql的子集,所以这是不可能的。尝试一个子选择:
LEFT JOIN, or JOINs in particular are only supported in UPDATE statements of MySQL. DQL abstracts a subset of common ansi sql, so this is not possible. Try with a subselect:
UPDATE MyDemoBundle:Category c SET c.isActive = false WHERE ?1 MEMBER OF c.projects;
(会员实际上在这里变成一个子选项)。我不是100%肯定这是否有效,但它比加入更可爱。
(MEMBER OF is actually turning into a subselect here). I am not 100% sure if this works, but it is more likeli than the join.
这篇关于原则2更新与左键加入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文