2016-07-15 4 views
1

Я хочу выполнить внутреннее соединение на двух таблицах.Выполнять внутреннюю запись в Zend PHP Framework

Таблица А -

item_id

ITEM_TITLE

varX

Таблица B -

item_id

VARY

someVar

Так я сделал это с использованием запроса 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 Query.

Это то, что я написал -

$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 ')' 

в строке -> из (массива ('табла' => 'TABLEA') , массив ('item_id', 'ITEM_TITLE'), 'myScore' => '(5 'TABLEA'.' varX ') + 5 * Количество ()')

Не уверен, что делать здесь делать как я читал t он официальная документация, но все еще не может понять это. Любая помощь приветствуется!

+0

Какую версию Zend Framework вы используете? –

+0

Это версия 1.12.3. – chautob0t

ответ

1

Кавычки были использованы неверно в вашем коде. Кроме того, 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); 
+0

У меня все еще такая же ошибка. – chautob0t

+0

@ chautob0t, Это о ненужном третьем параметре. См. Мое обновление – RomanPerekhrest

+0

Теперь я получаю это: Ошибка анализа: синтаксическая ошибка, неожиданные '=', ожидающие ',' или ')' в строке _-> joinInner (array ('tablB' => 'tableB'), 'tablA .item_id = tablB.item_id ') _ – chautob0t