我有两个实体:商店和用户。它们通过StoreUser连接表具有多对多关系。要清楚的是,除了关系数据之外,没有任何内容存储在连接表中。
我创建了Store和User实体,并在这些实体中设置了所有关系元数据。
我现在正试图找出搜索分配给特定用户的所有商店的最简单方法。在我的商店存储库中,我有一个findAllByUser(User $user)
,我正在尝试构建一个查询,以根据传入的用户返回商店列表。
编写以下类型的查询的最简单方法是什么:
SELECT * FROM store
加入store_user
store_user
。store_id
= store
。id
在store_user
。user_id
= 100001;
我应该提一下,我试图尽量避免为StoreUser创建一个实体。
提前致谢!
答案 0 :(得分:0)
您可以使用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();