原则2更新与左键加入 [英] Doctrine 2 UPDATE with LEFT JOIN

查看:105
本文介绍了原则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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆