在Zend PHP框架中执行内部联接
我想在两个表上执行内部联接 表A- 项目编号 项目名称 瓦克斯 表B- 项目编号 变化 萨默瓦尔 这就是我如何使用原始SQL查询完成的在Zend PHP框架中执行内部联接,php,mysql,zend-framework,zend-db,Php,Mysql,Zend Framework,Zend Db,我想在两个表上执行内部联接 表A- 项目编号 项目名称 瓦克斯 表B- 项目编号 变化 萨默瓦尔 这就是我如何使用原始SQL查询完成的 $sql = 'SELECT tableA.item_id, tableY.item_title AS Name, 5 * varX + 5 * count(*) AS myScore FROM tableA INNER JOIN tableY ON tableA.item_id=tableY.item_id WHERE someVar=\'8\' G
$sql = 'SELECT tableA.item_id, tableY.item_title AS Name, 5 * varX + 5 * count(*) AS myScore
FROM tableA
INNER JOIN tableY ON tableA.item_id=tableY.item_id
WHERE someVar=\'8\'
GROUP BY item_id
ORDER BY myScore DESC
LIMIT 10';
$stmt = $this->_db->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
现在我想使用Zend查询来实现这一点
这就是我写的-
$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title'), 'myScore'=>'(5*'tableA'.'varX') + 5*count(*)')
->joinInner(array('tablB'=>'tableB'), 'tablA'.'item_id' = 'tablB'.'item_id')
->where('someVar = 8')
->GROUP('item_id')
->order('myScore DESC')
->limit(10);
$dataResult = $this->_db->fetchAll($data);
但我得到了这个错误-
syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'
行->从(数组('tablA'=>'tableA')、数组('item_id','item_title')、'myScore'=>'(5'tableA'.'varX')+5*count())
我不知道在这里该做什么,因为我已经阅读了官方文档,但仍然无法理解这一点。感谢您的帮助 您的代码中引用的方式错误。另外,tt看起来像是,您对
'myScore'
字段使用了不必要的第三个参数。应将其置于第二个参数中尝试以下操作:
...
$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title', 'myScore'=>'(5 * tableA.varX) + 5*count(*)'))
->joinInner(array('tablB'=>'tableB'), 'tablA.item_id = tablB.item_id')
->where('someVar = 8')
->group('tablA.item_id')
->order('myScore DESC')
->limit(10);
您使用哪一个Zend Framework版本?版本1.12.3。@Chautobot,关于不必要的第三个参数。查看我的更新当我得到这个时,解析错误:语法错误,意外的“=”,在第->行中应为“,”或“)”->joinInner(数组('tablB'=>'tableB'),'tablA.item_id=tablB.item_id')可能缺少一个括号。请重试上次更新的版本。我已经用括号试过了,还是一样的错误。试图找出实际的问题是什么。奇怪的是,乍一看,该代码片段中没有其他语法错误