0

我有 3 个教义表,为简单起见,我将它们称为UMR

U可以有M's 和R's

M可以R有的

R可以一无所有

作为图表,这可能如下所示:

U ---> M
|      |
|      V
'----> R

我想要做的是创建一个查询来获取所有RU通过M或直接由 in 中的列排序并由 in 中的列R查询的所有内容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 . "%");

以及许多其他事情,但无济于事......

提前致谢!

4

1 回答 1

0

好的,所以我最终做的是:

M从哪里选择所有IDu.id = :uid

然后,从R哪里全选r.u = :uid OR r.m IN (result from first query)

真的很简单,我不知道为什么我没有早点想到它......

于 2013-07-09T13:59:27.933 回答