我有两个实体:Store和User。它们通过StoreUser联接表具有多对多关系。需要明确的是,除了关系数据之外,联接表中没有存储任何内容。
我创建了Store和User实体,并在这些实体中设置了所有关系元数据。
我现在正试图找出最简单的方法来搜索分配给特定用户的所有商店。在我的Store存储库中,我有一个findAllByUser(User $user)
,我试图在其中构建一个查询,以返回基于传入用户的Store列表。
编写以下类型的查询最简单的方法是什么:
从store
中选择*
在store_user
上加入store_user
。store_id
=store
。id
其中store_user
。user_id
=100001;
我应该提到,如果可能的话,我正在努力避免为StoreUser创建实体。
提前感谢!
您可以使用DQL:来完成它
$query = $this ->getEntityManager()
->createQueryBuilder()
->select('s')
->from('AcmeAcmeBundle:Store', 's')
->leftJoin('AcmeAcmeBundle:StoreUser', 'su', 'WITH', 'su.store_id = s.user_id')
->where('su.user_id = :id')
->setParameter('id', 100001)
->getQuery();
$result = $query->getResult();