SO で例が見つからないので、質問を投稿します。
グループ エンティティ、ショップ エンティティ、トランザクション エンティティがあります。
グループには多くのショップがあり、ショップは多くのグループに属することができます。Group.php で:
/**
* @ORM\ManyToMany(targetEntity="Shop", inversedBy="groups")
* @ORM\JoinTable(name="group_shop",
* joinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="shop_id", referencedColumnName="id")}
* )
**/
private $shops;
そしてShop.phpで
/**
* @ORM\ManyToMany(targetEntity="Group", mappedBy="shops")
*/
private $groups;
次に、ショップが取引を行います。Transaction.php で:
/**
* @ORM\ManyToOne(targetEntity="Shop", inversedBy="transactions")
* @ORM\JoinColumn(name="shop_id", referencedColumnName="id")
* */
private $shop;
そしてShop.phpで:
/**
* @ORM\OneToMany(targetEntity="Transaction", mappedBy="shop")
**/
private $transactions;
クエリしたいのは、グループからのすべてのトランザクションです。これは非常に単純でなければなりません。
私が持っているもの:
$query4 = $em->createQuery("SELECT t FROM MGFAppBundle:Transaction t
WHERE t.date > :from AND t.date < :to AND t.shop IN (/* HERE I'M STUCK */)")- >setParameters(array(
'from' => $from
'to' => $to
));
これが正しいアプローチなのかどうかはわかりません...まあ、dqlを手に入れるのはちょっと難しいです。
この dql クエリはどのように記述すればよいですか?
前もって感謝します。