我有一个 Product 实体和一个 Shop 实体。
一个商店可以有 0 到 n 个产品,一个产品只能在一个商店中。
因此,产品实体表通过 shop_id 表字段引用 Shop 实体。
当使用学说查询生成器查询给定商店的产品时,我们可以这样做:
$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 而不是实体实例(即:在指向另一个实体的学说实体字段上)?
我最初认为只有第一个例子可以工作......