具有ManyToOne关联的实体上的getArrayResult

时间:2011-03-30 11:50:13

标签: php orm doctrine-orm

具有以下基本表格(一对多关系)
客户 - 有很多用户。
用户 - 每个用户都属于单个客户端。

在一个非常简单的例子中,如果我查询用户实体(Querybuilder) 与getArrayResult()我看到以下内容:

  1. 实际生成的SQL包含外键字段 返回(即ClientID)
  2. 实际返回的数据数组不包含外键 领域。
  3. 在这个阶段,我不需要返回外国数据,因此不需要 加入相关表格。

    所以问题是......
    我在数组中返回外键值的内容是什么或如何?

    查询是:

       $qb = $this->_em->createQueryBuilder();  
       $qb->select('e');  
       $qb->from('Entity\User', 'e');  
    

    SQL是:

    SELECT w0_.Id AS Id0, w0_.Name AS Name2, w0_.ClientID AS ClientID7
    FROM users w0_  
    

2 个答案:

答案 0 :(得分:17)

在执行查询之前,尝试在查询(而不是构建器)上设置HINT_INCLUDE_META_COLUMNS查询提示。

$q->setHint(Query::HINT_INCLUDE_META_COLUMNS, true);

答案 1 :(得分:0)

据我所知,你不能这样做,因为ClientID不是User的属性。用户拥有类似$ client的属性,该客户端实体具有$ id。

这让你感到困惑,因为你正在与Entites打交道,但你仍在思考SQL。

解决方案虽然效率稍差,但可能是将Client实体加入DQL查询,然后获取$results[N]['client']['id'](或类似的,我对getResultArray()不太熟悉)

相关问题