教条内心

时间:2012-04-03 18:07:28

标签: mysql zend-framework doctrine inner-join

这是ZF应用程序中的Doctrine代码:

$rowset = Doctrine_Query::create()
    ->select("cu.clientuser, cu.usertitle, u.firstname")
    ->from('Model_Db_Tblclientuser cu')
    ->innerJoin('cu.Tblusers u')
    ->whereIn('cu.clientid', (int)$clientid)
   ->execute();


foreach ($rowset as $row) {             
    $list[] = array(
        'title' => $row->usertitle,
        'firstname' => $row->firstname
    );
}

生成的查询是这样的:

SELECT 
    t.clientuser AS t__clientuser, 
    t.usertitle AS t__usertitle, 
    t2.userid AS t2__userid, 
    t2.firstname AS t2__firstname 
FROM 
    tblclientuser t INNER JOIN tblusers t2 ON t.userid = t2.userid 
WHERE 
   (t.clientid IN (1))

复制粘贴到phpmyadmin,它给出了完美的结果。 但是当我运行ZF应用程序时,它出错了......

对于“clientuser”字段,一切运行良好。 但对于“名字”字段来说,这是错误的......

Unknown record property / related component "firstname"
on "Model_Db_Tblclientuser"

我做错了什么?

非常奇怪的是要注意:如果我这样做

foreach ($rowset as $row) {             
    var_dump($row);
}

它也从其他表中输出内容,表格根本不重要......

3 个答案:

答案 0 :(得分:0)

我想我前一段时间遇到了同样的问题并通过选择加入时的ID解决了这个问题。

尝试添加..

->select("cu.clientuser, cu.usertitle, u.id, u.firstname")

或者无论加入密钥是什么,看看是否能解决它。

答案 1 :(得分:0)

您是否尝试过执行大量选择而不是自定义选择?

->select("cu.*, u.*")

或者可以删除选择。我知道这不是一个解决方案,并且(来自symfony中的一个学说用户)你的代码中的所有内容似乎都可以。你使用的是1.2.4吗?

ps:“保存你的浏览器,不要var_dump一个doctrine 1.x对象”:)

答案 2 :(得分:0)

我意识到这是一个老问题,但是如果有人遇到这个问题,我相信这与我经历过的类似问题有关。

请在此处查看解决方案:Doctrine Query Builder Bug?