2016-12-20 1 views
0

Ich habe versucht, Yii-Sphinx-Erweiterung zu verwenden, und es funktioniert gut, wenn ich eine einfache Abfrage verwendet habe, aber wenn ich versuche, linken Join verwenden, dann funktioniert es nicht. Es gibt den folgenden Fehler zurück. Ich habe viele Abfragen getestet, funktioniert aber nicht. Ich bin mit Yü-Sphinx ErweiterungYii2 Sphinx Left join funktioniert nicht

SQLSTATE[42000]: Syntax error or access violation: 1064 sphinxql: syntax 
error, unexpected IDENT, expecting $end near 'LEFT JOIN specs ON specs.id = 
listing.specs_id' 
The SQL being executed was: SELECT specs.id, listing.title,listing.specs_id,  
listing.reg_no, listing.price, listing.status, listing.featured FROM listing 
LEFT JOIN specs ON specs.id = listing.specs_id 
Error Info: Array 
(
    [0] => 42000 
    [1] => 1064 
    [2] => sphinxql: syntax error, unexpected IDENT, expecting $end near 
    'LEFT JOIN specs ON specs.id = listing.specs_id' 
) 

hier ist meine Abfrage

SELECT specs.id, listing.title,listing.specs_id, listing.reg_no, listing.price, listing.status, listing.featured FROM listing LEFT JOIN specs ON specs.id = listing.specs_id 
+0

Fügen Sie tatsächlich \ in dieser Abfrage hinzu? – Bizley

+0

Überprüfen Sie meine Frage jetzt. Ich habe eine falsche Abfrage hinzugefügt. Bitte überprüfe jetzt @Bizley –

+0

Welche Version von Sphinx (nicht yii2-Sphinx) hast du? – Bizley

Antwort

1

Ich habe dieses Problem gelöst. Hier ist das Detail für jeden, der in einem solchen Problem stecken bleibt. Es folgt meine Lösung mit sphinx Query Builder in yii2-Sphinx-Erweiterung:

$q = new Query(); 
$q->from('listing'); 
$rows = $q->all(); 

'Listing' ist der Index von der Sphinx-Konfigurationsdatei kann Join-Abfrage in sql_query geschrieben werden

, was ich falsch gemacht dass ich die einfache Abfrage anstelle des Abfrage-Generators verwendet habe und das Problem gelöst hat. Zum Beispiel funktioniert Join-Abfrage nicht mit dem folgenden Code.

$sql = 'Select * FROM listing'; 
$rows = Yii::$app->sphinx->createCommand($sql)->queryAll(); 

Einfache Abfrage wird ausgeführt, aber die Abfrage mit einem Join wird Fehler zurückgeben.

0

SphinxSearch selbst nicht unterstützt ‚JOIN ist. Es kann keine solchen Abfragen ausführen.

Kein Problem mit yii2-sphinx als solche, wie Sphinx funktioniert.

Wenn das Schreiben SphinxQL direkt abfragt, hier die SELECT-Syntax lesen: http://sphinxsearch.com/docs/current.html#sphinxql-select

SELECT-Anweisung in Version 0.9.9-RC2 eingeführt wurde. Seine Syntax basiert auf regulärem SQL, fügt jedoch mehrere Sphinx-spezifische Erweiterungen hinzu und weist einige Lücken auf (z. B. fehlende Unterstützung für JOINs).

Im allgemeinen Gebrauch Querybuilder http://www.yiiframework.com/doc-2.0/yii-sphinx-querybuilder.html , da es nur über Angebote 'Methoden' actully von Sphinx unterstützt.

+0

Ich habe es funktioniert mit Query Builder $ q = new Query(); –