查询工作得很好,在我以前基于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位置。
php - 如何将联接表的结果实体封装在Doctrine中的另一个实体中?-LMLPHP
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

07-28 13:56