【发布时间】:2011-03-14 18:44:52
【问题描述】:
我正在使用 Doctrine 2 尝试使用内部连接进行查询。我有一个站点实体和一个页面实体。每个站点可以有多个页面,每个页面只能属于一个站点。我的 pages 表行中有一个 site_id 外键。在我的 Site 实体中,我创建了一个 OneToMany 关联,其中目标实体是我的 Page 实体,并且 mappedBy 设置为 Site。
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @OneToMany(targetEntity="Page", mappedBy="Site", cascade={"persist", "remove"})
*/
private $pages;
在我的 Page 实体中,我有一个 ManyToOne 关联,其中目标实体设置为 Site。
/**
* @var App\Entity\Site
* @ManyToOne(targetEntity="Site")
*/
private $site;
这是我的查询构建器语句,我在其中传递了一个特定的站点 ID:
$qb = $this->_em->createQueryBuilder();
$qb->select('s')
->from('App\Entity\Site', 's')
->innerJoin('s.pages', 'p')
->where('s.id = :id')
->setParameter('id', $id);
这是我返回的实际 SQL:
SELECT s0_.id AS id0, s0_.domain AS domain1 FROM sites s0_ INNER JOIN WHERE s0_.id = ?
看看 INNER JOIN 信息是如何完全丢失的?我在这里做错了什么还是 Doctrine 2 有问题?
【问题讨论】:
标签: doctrine-orm