Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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_Doctrine_Orm - Fatal编程技术网

Php 链式一对多关系的条令查询

Php 链式一对多关系的条令查询,php,doctrine,orm,Php,Doctrine,Orm,我有三个表A、B、C。A和B有一对多的关系。B和C有另一种一对多的关系。换句话说,每个A可以有多个B,而每个B可以有多个c 现在我想查询a的一个给定记录,以获得所有具有相关Cs的相关B。换句话说,对于一个给定的a,它是表a中的一个记录,我想从表B中得到所有相关的B,前提是每个B在表C中也有超过零个相关的C 如何用PHP编写语句?我有一些代码不起作用: 条令查询::create()->from('B')->leftJoin('C')) ->andWhere('b.A_id=?',A.id)->an

我有三个表A、B、C。A和B有一对多的关系。B和C有另一种一对多的关系。换句话说,每个A可以有多个B,而每个B可以有多个c

现在我想查询a的一个给定记录,以获得所有具有相关Cs的相关B。换句话说,对于一个给定的a,它是表a中的一个记录,我想从表B中得到所有相关的B,前提是每个B在表C中也有超过零个相关的C

如何用PHP编写语句?我有一些代码不起作用:

条令查询::create()->from('B')->leftJoin('C'))
->andWhere('b.A_id=?',A.id)->andWhere('c.b_id=b.id')

从我对条令的工作来看,这是不可能的(我要说的是条令1)


我知道最糟糕的工作是做多个查询。IE获取所有的B id并在WHERE子句中使用它们,然后在单独的查询中提取它们。如果其他人有更好的方法,我会对它感兴趣:)

从我与条令的工作来看,这是不可能的(条令1就是我要说的)


我知道最糟糕的工作是做多个查询。IE获取所有的B id并在WHERE子句中使用它们,然后在单独的查询中提取它们。如果其他人有更好的方法,我会对此感兴趣:)

正如premiso所指出的,您需要编写至少2个查询。我也会按照他建议的方式去做(把所有的B id都拿出来,用IN)

要使其更符合教义,请查看。它们已经展示了一个示例,在中使用
来选择ID


编辑:阅读DuoSRX的答案,我想你可能是指他用内部连接显示的内容,但不太确定我是否理解了问题的正确性。

正如premiso所指出的,你至少需要写两个查询。我也会按照他建议的方式去做(把所有的B id都拿出来,用IN)

要使其更符合教义,请查看。它们已经展示了一个示例,在
中使用
来选择ID


编辑:阅读DuoSRX的回答,我想你可能是指他用内部连接显示的内容,但不确定我是否理解了问题的正确性。

为什么不使用内部连接

使用Foo、Bar和Baz(分别为A、B和C):


这样,您将只获得属于Foo的、具有一个或多个Baz的Bar。

为什么不使用innerJoin呢

使用Foo、Bar和Baz(分别为A、B和C):

这样你们只会得到一个属于Foo的酒吧,它有一个或多个Baz

Doctrine_Query::create()
->from('Bar bar')
->where('bar.foo_id = ?', $foo->id)
->innerJoin('bar.Baz baz');