问题描述
在我的一个页面上,我显示了一个客户列表,其中包含他们的国家或公司名称等信息。
于是我进行了如下操作:
存储库:
public function findAllAvailableCustomers()
{
return $this->createqueryBuilder('s')
->join('s.user','u')
->join('u.entreprise','e')
->leftJoin('s.subscription','ss')
->leftJoin('ss.plan','sp')
->addSelect('ss')
->where('e.willbedeleted = false')
->orderBy('s.createdAt','DESC')
->getQuery()
->getResult();
}
树枝:
//...
<td>{{ customer.user.email }}</td>
<td>{{ customer.denomination }}</td>
<td>{{ customer.user.entreprise.nom }}</td> // generates 11 requests
//...
我尝试在 fetch="EXTRA_LAZY"
和 StripeCustomer.user
实体属性中添加 User.entreprise
,但没有。
->addSelect('u,e,ss')
但它会产生 600 多个请求
所以我不知道... :/
解决方法
您还应该在第一个查询中选择企业实体:
public function findAllAvailableCustomers()
{
return $this->createQueryBuilder('s')
->join('s.user','u')
->join('u.entreprise','e')
->leftJoin('s.subscription','ss')
->leftJoin('ss.plan','sp')
->addSelect('e') // <--- HERE
->addSelect('ss')
->where('e.willBeDeleted = false')
->orderBy('s.createdAt','DESC')
->getQuery()
->getResult();
}