私は2つのエンティティを持っています
Order
oneToMany:
statuses:
targetEntity: \Status
mappedBy: order
Status
manyToOne:
order:
targetEntity: \Order
inversedBy: status
fields:
code:
type:integer
ご覧のとおり、1 つの注文が一度に複数のステータスを持つことができます (「発送済み」、「支払い済み」などのステータス)。
ステータスが 6 でない注文をすべて取得するクエリを作成したいと考えています。
3 つの注文があるとします。すべての注文のステータスは「1」(新規) で、これらの注文の 1 つはさらにステータスが「6」(審査中) です。ステータスが 6 でない 2 つの注文のみを取得したいと考えています。
そのようにクエリを書く..
$qb->select('o')
->from('MyOrderBundle:Order', 'o')
->innerJoin('o.statuses', 'st')
->where(
$qb->expr()->not(
$qb->expr()->eq('st.code', 6)
)
);
生成された SQL からステータス行 6 を除外しますが、結果セットには順序が含まれます (コード = 1 のステータス行が 6 に等しくないという条件に一致するため)。「{something} のような関連付けを持つエンティティを結果セットから除外する」と言えるようにする必要があります。ここで役立つ DQL キーワードはありますか?
- doctrine ユーザーグループへの相互投稿と、解決策が見つかれば両方の場所で回答を更新します。