学说——实体不被牵强



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

生产类别-

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

产品关键词类-

/**
 * @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 EntityProduction p");

productions、productionKeywords和keywords的加载都很好,但是如果我尝试获取加入productionKeyword和关键字(如)

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

则不加载实体。不确定我做错了什么,因为我与其他一些实体有着相同的关系设置,而且对他们来说很好。

好的,所以如果您有一个"纯"联接实体(如上面的ProductionsKeywords类),那么它就不能在fetch查询中使用。我通过使用productions_keywords表中的时间戳列作为ProductionsKeywords类中的另一个属性来解决这个问题,然后fetch联接开始工作。

相关内容

  • 没有找到相关文章

最新更新