学说 - 没有获取的实体

时间:2012-09-13 13:33:43

标签: php doctrine-orm

我有一些具有一对多/多对一关系的实体 -

生产类 -

/**
 * @OneToMany(targetEntity="ProductionsKeywords", mappedBy="production")
 */
protected $productionKeywords;

ProductionsKeywords class -

/**
 * @ManyToOne(targetEntity="Production", inversedBy="productionKeywords")
 * @JoinColumn(name="production_id", referencedColumnName="id", nullable=false)
 * @Id
 */
protected $production;


/**
 * @ManyToOne(targetEntity="Keyword", inversedBy="keywordProductions")
 * @JoinColumn(name="keyword_id", referencedColumnName="id", nullable=false)
 * @Id
 */ 
protected $keyword;

关键字类 -

/**
 * @OneToMany(targetEntity="ProductionsKeywords", mappedBy="keyword")
 */
protected $keywordProductions;

如果我编写像

这样的DQL查询
$query = $this->entityManager->createQuery("SELECT p FROM \Entity\Production p");

制作,制作关键字和关键字都加载正常,但是如果我尝试获取加入关键词和关键字

$query = $this->entityManager->createQuery("SELECT p, pk, k FROM \EntityProduction p 
                         LEFT JOIN p.productionKeywords pk
                         LEFT JOIN pk.keyword k
                         ");

然后没有加载实体。 不知道我做错了什么,因为我与其他一些实体建立了相同的关系,并且它可以正常使用它们。

1 个答案:

答案 0 :(得分:0)

好的,所以看起来如果你有一个'纯'连接实体(比如上面的ProductionsKeywords类)那么它就不能用在获取查询中。我通过使用productions_keywords表中的timestamp列作为ProductionsKeywords类中的另一个属性解决了这个问题,然后fetch join开始工作。