2016-07-15 9 views
1

Ich möchte eine innere Verbindung auf zwei Tabelle durchführen.Führen Sie eine innere Verbindung in Zend PHP Framework

Tabelle A -

ITEM_ID

ITEM_TITLE

varX

Tabelle B -

ITEM_ID

VARY

someVar

So habe ich das mit einer RAW SQL-Abfrage gemacht.

$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(); 

Jetzt möchte ich dies mit einer Zend Query tun.

Dies ist, was ich geschrieben habe -

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

Aber ich habe diesen Fehler -

syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')' 

in Zeile -> aus (array ('tabla' => 'tableA') , array ('ITEM_ID', 'ITEM_TITLE'), 'myScore' => '(5 'tableA'.' varX ') + 5 * count ()')

nicht sicher, was hier zu tun wie ich gelesen habe Die offizielle Dokumentation kann das aber immer noch nicht herausfinden. Jede Hilfe wird geschätzt!

+0

Welche Zend Framework Version verwenden Sie? –

+0

Es ist Version 1.12.3. – chautob0t

Antwort

1

Die Anführungszeichen wurden falsch in Ihrem Code verwendet. Es scheint auch so zu sein, dass Sie den unnötigen dritten Parameter für das Feld 'myScore' verwendet haben. Es sollte im zweiten Parameter gesetzt werden
Versuchen Sie Folgendes:

... 
$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

Ich habe immer noch den gleichen Fehler. – chautob0t

+0

@ chautob0t, Es geht um den unnötigen dritten Parameter. Siehe mein Update – RomanPerekhrest

+0

Jetzt bekomme ich das, Parse-Fehler: Syntaxfehler, unerwartete '=', erwartet ',' oder ')' in Zeile _-> JoinInner (Array ('TablB' => 'TableB'), 'TablA .item_id = tablB.item_id ') _ – chautob0t