2016-12-20 5 views
0

Я пытаюсь использовать расширение Yii-Sphinx и его работу отлично, когда я использовал простой запрос, но когда я пытаюсь использовать левое соединение, это не сработает. Он возвращает ошибку ниже. Я тестировал множество запросов, но не работал. Я использую расширение Yii-SphinxYii2 Sphinx Left join not working

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

вот мой запрос

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

Вы действительно добавляете \ в этот запрос? – Bizley

+0

Проверьте мой вопрос сейчас. Я добавил неверный запрос. Пожалуйста, проверьте сейчас @Bizley –

+0

Какая версия Sphinx (не yii2-sphinx) у вас есть? – Bizley

ответ

1

Я решил эту проблему. Вот деталь для любого, кто застрял в такой проблеме. Ниже мое решение с застройщиком сфинкс запроса доступен в yii2-сфинкс расширения:

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

«список» является индексом из файла конфигурации сфинкса, Join запрос может быть записан в sql_query

Что я делаю неправильно что я использовал простой запрос, а не строитель запросов, и это решило проблему. Например, запрос соединения не будет работать с приведенным ниже кодом.

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

Простой запрос будет выполнен, но запрос с любым соединением вернет ошибку.

0

SphinxSearch сам не поддерживает «РЕГИСТРИРУЙТЕСЬ х. Он не может запускать такие запросы.

Не проблема с yii2-sphinx как таковой, как работает Сфинкс.

Если при записи SphinxQL запросов напрямую, можно прочитать ВЫБЕРИТЕ синтаксис здесь: http://sphinxsearch.com/docs/current.html#sphinxql-select

ЗЕЬЕСТ был введен в версии 0.9.9-RC2. Его синтаксис основан на регулярном SQL, но добавляет несколько расширений Sphinx и имеет несколько упущений (например, (в настоящее время) отсутствует поддержка JOIN).

В общем использовании QueryBuilder http://www.yiiframework.com/doc-2.0/yii-sphinx-querybuilder.html , как это предлагает только 'методы' actully поддерживается Сфинкса.

+0

У меня есть работа с помощью Query Builder $ q = new Query(); –