Php 条令在1和2表深度检索和排序数据

Php 条令在1和2表深度检索和排序数据,php,zend-framework,symfony,doctrine,dql,Php,Zend Framework,Symfony,Doctrine,Dql,在条令中我有3个表,为了简单起见,我将它们称为:U,M和R U可以有M和R M可以有R R不能有任何内容 如图所示,这可能如下所示: U ---> M | | | V '----> R 我想做的是创建一个查询,通过M或直接按R中的一列排序并按R中的一列查询与U相关的所有R 在PHP中,我目前有: $qb->select('r') ->from('R','r') ->where('r.u = :uid') ->ord

在条令中我有3个表,为了简单起见,我将它们称为:
U
M
R

U
可以有
M
R

M
可以有
R

R
不能有任何内容

如图所示,这可能如下所示:

U ---> M
|      |
|      V
'----> R
我想做的是创建一个查询,通过
M
或直接按
R
中的一列排序并按
R
中的一列查询与
U
相关的所有
R

在PHP中,我目前有:

$qb->select('r')
    ->from('R','r')
    ->where('r.u = :uid')
    ->orderBy('r.order','DESC')
    ->setParameter('uid', $U->getId())
    ->setFirstResult( $offset )
    ->setMaxResults( $limit )
    ->andWhere(
        $qb->expr()->orX(
            $qb->expr()->like('r.q1',':query'),
            $qb->expr()->like('r.q2',':query')
        )
    )
    ->setParameter('query', "%" . $query . "%");
我想以某种方式加入
m.r
,同时仍然能够查询它们的属性。我试过:

$qb->select('u.r, m.r')
    ->from('U','u')
    ->where('u.id = :uid')
    ->join('u.m','m')
    ->orderBy('u.r.order','DESC')
    ->setParameter('uid', $U->getId())
    ->setFirstResult( $offset )
    ->setMaxResults( $limit )
    ->andWhere(
        $qb->expr()->orX(
            $qb->expr()->like('u.r.q1',':query'),
            $qb->expr()->like('u.r.q2',':query')
        )
    )
    ->setParameter('query', "%" . $query . "%");
以及许多其他事情,但没有用


提前谢谢

好吧,我最后做的是:

M
中选择所有ID,其中
u.ID=:uid

然后,从
R
中选择all,其中
R.u=:uid或R.m IN(第一次查询的结果)

真的很简单,我不知道为什么我之前没想到