我在教条中有3个表格,为简单起见,我会称之为:U
,M
和R
U
可以有M
和R
的
M
可以有R
的
R
什么都没有
如图所示,这可能是:
U ---> M
| |
| V
'----> R
我想要做的是创建一个查询以通过R
获取与U
相关的所有M
,或者通过R
中的列直接排序并查询通过R
中的列。
:
$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 . "%");
除了许多其他事情,但无济于事......
提前感谢!
答案 0 :(得分:0)
好的,我最终做的是:
从M
u.id = :uid
然后,从R
r.u = :uid OR r.m IN (result from first query)
简单,我不知道为什么我之前没有想到它......