2013-11-19 4 views
3

Я хочу создающий запрос SQL в фреймворка, которые выглядят так:евайте FULLTEXT соответствующего индекса запрос

mysql> SELECT id, body, MATCH (title,body) AGAINST 
-> ('Security implications of running MySQL as root') AS score 
-> FROM articles WHERE MATCH (title,body) AGAINST 
-> ('Security implications of running MySQL as root'); 

я попробовать это, но это не работает:

$dataProvider = new CActiveDataProvider('data', array(
      'criteria'=>array(
       'condition' => 'MATCH (title,body) AGAINST ('Security implications of running MySQL as root') AS score', 
WHERE MATCH (title,body) AGAINST ('Security implications of running MySQL as root') 
       'limit' => '20',   ), 
      'pagination' => false 
     )); 
+0

Try модель() -> findAllBySql ("Запрос") – Harikrishnan

ответ

2

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#condition-detail

Это относится к предложению WHERE в операторе SQL

Так должен быть только MATCH (title,body) AGAINST ('Security implications of running MySQL as root')

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#select-detail

Это относится к ЗЕЬЕСТУ в операторе SQL

Здесь ваше место для id, body, MATCH (title,body) AGAINST ('Security implications of running MySQL as root') AS score

0

Прежде всего вам нужно для выполнения запроса ALTER для столбца поиска.

ALTER TABLE item ADD FULLTEXT(title,description,location); 

Запрос на поиск

$query = \common\models\Item::find() 
      ->where(['is_active'=>'1']); 
$query->andWhere("MATCH(title,description,location) AGAINST 
('$searchKeywords' IN BOOLEAN MODE)"); 
Смежные вопросы