Php 链式一对多关系的条令查询
我有三个表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'))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
->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');