2015-10-11 7 views
0

это мой сфера код:Laravel 5.1 Query Scope

public function scopeTest($query, $text, $usrId) 
{ 
    if (trim($text) != "") { 
     return $query->where("usrid", "=" ,"$usrId")->where("text1", "LIKE" ,"%$text%")->orWhere("text2", "LIKE" ,"%$text%"); 
    }else{ 
     return $query->where("usrid", "=" ,"$usrId"); 
    } 
} 

Я наклоняю строить этот запрос:

select * from table where usrid = $usrId and (text1 like '%$text%' or text2 like '%$text%'); 

Поскольку "или" состояние не работает правильно.

ответ

0

Use a closure to create a group:

$query->where('usrid', $usrId)->where(function ($query) use ($text) { 
    $like = "%{$text}%"; 

    $query->where('text1', 'LIKE', $like)->orWhere('text2', 'LIKE' ,$like); 
}); 
+0

Не забудьте ввести 'переменную $ Text' в область. –

+0

К downvoter: помогите объяснить? –

+0

Хотя это ваш пост, я не нашел убедительной причины для вашего последнего редактирования. В то время я считал это оскорбительным и проголосовал. – revo

Смежные вопросы