2

1つのブランチに多くの顧客がいる場合、顧客が多くのブランチに関連している場合があります。したがって、これは多対多の関係です。

ブランチ:

<many-to-many target-entity="Customer" inversed-by="branches" field="customers"/>

お客様:

<many-to-many field="branches" target-entity="Branch" mapped-by="customers"/>

次に、次のクエリを実行します。顧客のブランチが特定のブランチオブジェクトと一致するすべての顧客を選択します。

これは私が試したものです:

  $branch = $em->getRepository('MyBundle:Branch')
               ->findOneById($bid);

  $qb->select(array('c'))
     ->from('MyBundle:Customer', 'c')
     ->where($qb->expr()->in('c.branches', $branch))
     ->andWhere('c.delted = 0')
     ->getQuery();

だから私の考えはINステートメントを使うことでした。しかし、これは機能しません。

エラー:

致命的なエラー:クラスDateTimeのオブジェクトを48行目の文字列..Query \ Expr\Func.phpに変換できませんでした

これを正しい方法で行う方法はありますか?

4

1 に答える 1

3

クエリに結合を追加してみてください:

$qb->select(array('c', 'b'))
    ->from('MyBundle:Customer', 'c')
    ->join('c.branches', 'b')
    ->where('b IN (:branch)')
    ->andWhere('c.deleted = 0')
    ->setParameter('branch', array($branch))
    ->getQuery();
于 2012-10-19T08:12:11.717 に答える