Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在条令上或条令中进行左连接_Php_Mysql_Symfony_Doctrine Orm_Query Builder - Fatal编程技术网

Php 如何在条令上或条令中进行左连接

Php 如何在条令上或条令中进行左连接,php,mysql,symfony,doctrine-orm,query-builder,Php,Mysql,Symfony,Doctrine Orm,Query Builder,我正在使用Symfony2中的Doctrine的querybuilder创建一个查询来获取实体 我试图在MySQL中得到这个结果: SELECT u0_.id AS id0 FROM user u0_ LEFT JOIN rva_victims r3_ ON u0_.id = r3_.user_id INNER JOIN rva r1_ ON r1_.id = r3_.rva_id or u0_.id = r1_.declarant_id 我在$qb->join()中尝试了conditio

我正在使用Symfony2中的Doctrine的querybuilder创建一个查询来获取实体

我试图在MySQL中得到这个结果:

SELECT u0_.id AS id0
FROM user u0_ 
LEFT JOIN rva_victims r3_ ON u0_.id = r3_.user_id 
INNER JOIN rva r1_ ON r1_.id = r3_.rva_id or u0_.id = r1_.declarant_id
我在$qb->join()中尝试了conditionType和,但没有任何效果


有什么办法解决我的问题吗?

解决办法应该很简单。在您的情况下,假设您在repository类中,它应该是这样的:

$this
  ->createQueryBuilder('u')
  ->leftJoin(Victims::class, 'v', Query\Expr\Join::WITH, 'v.user = u.id')
  ->join(Rva::class, 'r', Query\Expr\Join::WITH, 'r.id = v.rva OR u.id = r.declarant');

这应该很好,我现在只是假设类名。还请考虑所有条件都是在类属性名(DQL)上完成的,而不是列名。

您可以通过在实体存储库中创建查询生成器来完成此操作

$qb = $this->createQueryBuilder('u')
     ->leftJoin('yourbundle:Entityname', 'ye', 'WITH', 'u0_.id = r3_.user_id')
     ->innerJoin('yourbuncle:entityname', 'yen', 'WITH', 'r1_.id = r3_.rva_id', 'OR', 'u0_.id = r1_.declarant_id');

我的问题是,受害者和Rva在同一个实体中。事实上,我有我的Rva实体,它包含一个受害者属性Rva@ManyToMany(“用户”)和声明属性Rva@ManyToOne(“用户”)。我需要在同一个请求中找到所有受害者和声明人。我在您的联接中遇到的问题是WITH,因为我得到的结果是:内部联接rva r4_uuon u0_0.id=r4_0.declarator_uid和(r4_0.declarator_idin(?)或u0_0.id=r4_0.declarator_id)您能用涉及的模型定义更新这个问题吗?更清楚的是问题出在哪里。我得到了
[Semantical Error]第0行,第155列靠近“或带有rvaD.declarant”:错误:“或”不指向类。
您是否尝试过这样输入“r1\uID=r3\uA.rva\uID或u0\uID=r1\uA.declarant\uID”。。。您在mysql客户机上通过sql查询获得了所需的行吗