在 Zend PHP Framework 中执行内部连接

Perform an Inner Join in Zend PHP Framework

我想对两个 table 执行内部联接。

Table一个-

item_id

item_title

varX

Table B -

item_id

变量Y

一些变量

这就是我使用 RAW 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\' 
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 ')'

->from(array('tablA'=>'tableA'), array('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);