Product エンティティと Shop エンティティがあります。
ショップは 0 から n 個の商品を持つことができ、商品は 1 つのショップにのみ存在できます。
したがって、product エンティティ テーブルは、shop_id テーブル フィールドを通じて Shop エンティティを参照しています。
doctrine query builder を使用して特定のショップの商品をクエリする場合、次のようにできます。
$products = $this->getDoctrine()->getRepository('MyBundle:Product')
->createQueryBuilder('p')
->where('p.shop = :shop')
->setParameter('shop', $shop) // here we pass a shop object
->getQuery()->getResult();
またはこれ:
$products = $this->getDoctrine()->getRepository('MyBundle:Product')
->createQueryBuilder('p')
->where('p.shop = :shopId')
->setParameter('shopId', $shopId) // we pass directly the shop id
->getQuery()->getResult();
そして、両方ともうまくいくようです...私は疑問に思っています:そのような場合(つまり、別のエンティティを参照するドクトリンエンティティフィールドで)、エンティティインスタンスの代わりにエンティティIDを常に直接渡すことができますか?
私は当初、最初の例だけがうまくいくと思っていました...