查询工作得很好,在我以前基于PDO的代码中,当查询联接表时,我能够在父模型中嵌套相关的表模型。使用此代码:
$qry = $em->createQueryBuilder()
->select('l', 'a')
->from('AppBundle:Hflogs', 'l')
->leftJoin('AppBundle:HflogSwLocations', 'a')
->where($em->createQueryBuilder()->expr()->notIn('l.id', $sub->getDQL()))
->orderBy('l.submitted', 'DESC')
->setMaxResults(50);
$logs = $qry->getQuery()->getResult();
dump($logs); die();
这个查询使用的模式部分是一个I-guess并行关系,因为Hflog不包含与位置的关系,而我使用的是连接器表,它只特定于Hflog位置。
HflogSwlocations的条令注释:
/**
* @var \AppBundle\Entity\Hflogs
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Hflogs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="hflog_id", referencedColumnName="id")
* })
* @SerialGroups({"public"})
*
*/
private $hflog;
/**
* @var \AppBundle\Entity\SwLocations
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\SwLocations")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="sw_loc_id", referencedColumnName="id")
* })
* @SerialGroups({"public"})
*
*/
private $swLoc;
返回此:
array:51 [▼
0 => Hflogs {#450 ▶}
1 => HflogSwLocations {#569 ▶}
2 => HflogSwLocations {#413 ▶}
3 => HflogSwLocations {#420 ▶}
4 => HflogSwLocations {#437 ▶}
5 => HflogSwLocations {#558 ▶}
6 => HflogSwLocations {#555 ▶}
7 => HflogSwLocations {#442 ▶}
8 => HflogSwLocations {#584 ▶}
9 => HflogSwLocations {#587 ▶}
HflogSwLocations属于HFlogs。
我可以得到我所需要的,但结果的提供方式对我来说似乎并不重要。如果一个Hflogs有一个HflogSwLocations,我希望返回Hflogs,并将HflogSwLocations封装为关系实体的一部分。如何通过条令查询来完成此任务?
最佳答案
不需要指定要在查询中检索'a'
。你所需要做的就是检索hflog。Then it's all about lazy loading。