在 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);
我想对两个 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);