我正在使用主体2尝试使用内部连接执行查询。我有一个Site实体和一个Page实体。每个网站可以有多个网页,每个网页只能属于一个网站。我的页表行中有一个site_id外键。在我的Site实体中,我创建了OneToMany关联,其中目标实体是我的Page实体,而mappedBy设置为Site。主体2查询缺少内部连接的一部分
/**
* @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信息完全丢失?我在这里做错了什么,或者这是教条2的问题?
只要我有''包含在那里,我选择什么并不重要。在我真正的查询中,我包含'p',但是我只是从查询中删除了所有无关的东西来简化我的问题。 –