Php Doctrine2-(如何)获取与main关联的对象
假设我在Doctrine2中有一个关联映射 如何定义在查询主对象时需要获取所有关联对象 实际上,如果我定义(Main 1-*Sub),然后访问Sub集合中的所有项,Doctine将执行单个DB请求来获取每个子对象。我需要在主查询(联接)中检索子对象Php Doctrine2-(如何)获取与main关联的对象,php,orm,doctrine,doctrine-orm,Php,Orm,Doctrine,Doctrine Orm,假设我在Doctrine2中有一个关联映射 如何定义在查询主对象时需要获取所有关联对象 实际上,如果我定义(Main 1-*Sub),然后访问Sub集合中的所有项,Doctine将执行单个DB请求来获取每个子对象。我需要在主查询(联接)中检索子对象 评论或(最好是RTMs欢迎)如果您经常需要(即始终获取所有关联),请声明您的关联。有关详细信息,请参阅第17-19章 如果您只在几段代码中需要它,请使用DQL查询它们()。这样,您必须指定所有关联 $query = $em->createQue
评论或(最好是RTMs欢迎)如果您经常需要(即始终获取所有关联),请声明您的关联。有关详细信息,请参阅第17-19章 如果您只在几段代码中需要它,请使用
DQL
查询它们()。这样,您必须指定所有关联
$query = $em->createQuery("SELECT u, a FROM User u JOIN u.address a WHERE a.city = 'Berlin'");
$users = $query->getResult();
如果要经常使用该查询,最好将其封装在Entity类中(简单,但不是最佳解决方案),或者为实体创建一个查询(稍微复杂一点,但这是“正确的方法”)。public function getUsersFromCity($city): Collection
{
return $this->createQueryBuilder('u')
->leftJoin('u.address', 'a')
->addSelect('a')
->andWhere('a.city = :city')
->setParameter('city', $city)
->getQuery()
->getResult()
;
}