0

U教義には 3 つのテーブルがあります。簡単にするために、それらを ,Mと呼びます。R

UMとを使用できRます

Mを持つことができRます

R何も持てない

ダイアグラムとして、これは次のようになります。

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

私がやりたいことは、 の列を介して、または の列によって直接並べ替えられ、 の列によって照会されるすべてRの関連を取得する 1 つのクエリを作成することです。UMRR

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どこからすべてのIDを選択しますu.id = :uid

次に、Rどこからすべてを選択しますr.u = :uid OR r.m IN (result from first query)

本当に単純なことで、なぜ以前に考えなかったのかわかりません...

于 2013-07-09T13:59:27.933 に答える