这是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);
}
它也从其他表中输出内容,表格根本不重要......
答案 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?