使用两个实体之间的QueryBuilder加入Symfony Doctrine

时间:2015-10-29 11:46:41

标签: php symfony join orm doctrine

我对Doctrine相对较新,并且正在尝试在正确返回的两个实体之间进行连接。我不太了解Doctrine目前使用的DRM,因此目前只是一个试错的案例。

我有两个实体,一个是文档,一个是文档播种详细信息。我需要加入document_id存在于document-dow-detail表/实体中的两个,以获得返回的document-dow-detail实体中存在的几个字段。

因此,在我的文档存储库中,我尝试了以下代码(对正在发生的事情了解不多)。有人能指出我这里发生了什么以及它为什么不起作用?

    $db = $this->createQueryBuilder($this->alias);
    $db->addSelect("dsd");
    $db->leftJoin("doc_sow_detail",'dsd','ON',"id_document");

当我在IDE中断点并评估$ db-> getQuery()函数时,这是已生成的_dql。

SELECT d, dsd FROM BillingBundle\Entity\Document d LEFT JOIN doc_sow_detail dsd ON id_document

在我把电脑扔到窗外之前,有人能给我一些关于我在做错的线索吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

一个简单的doctrine join示例,它将类别上的产品类别加入:

$qb = $this->_em->createQueryBuilder();

$qb->select('p')
    ->from('BRBProductBundle:Product', 'p')
    ->join('p.category', 'c')
    ->where('1 = 1');

希望这可以帮助你。

答案 1 :(得分:0)

我以为我会发布我的解决方案。

由于两个实体之间的单向关系,我不得不改变我的实体结构。

我将所需的实体属性移动到文档实体上,否定了我对连接的需求。这可能是首先需要这些属性的地方。