Laravel 5 Eloquent где и где

я пытаюсь получить результаты из таблицы с несколькими предложениями where и/или. Но я не получаю хороший результат!

$queries = journal::where(function($query)
{
$term =Input::get('text');
$query->where('titre', 'like', '%'.$term.'%')
    ->where('etat','!=','9')
    ->where('type', 0)
    ->orWhere('type', 1);
})->take(10)->get();    

person visulo    schedule 27.03.2017    source источник
comment
можно уточнить что не так? Я заметил, что вы используете переменную $text вместо $term.   -  person Christophvh    schedule 27.03.2017
comment
Вы не использовали переменную $term в своем запросе. Это намеренно?   -  person manian    schedule 27.03.2017
comment
Я не получаю хороший результат!   -  person visulo    schedule 27.03.2017
comment
Извините, опечатка!   -  person visulo    schedule 27.03.2017
comment
и вы все еще не получаете хороший результат?   -  person manian    schedule 27.03.2017


Ответы (3)


Вместо этого используйте whereBetween().

$queries = journal::where(function($query)
{
    $term =Input::get('text');
    $query->where('titre', 'like', '%'.$text.'%')
        ->where('etat','!=','9')
        ->whereBetween('type', [0, 1]);
})->take(10)->get(); 

https://laravel.com/docs/5.4/queries – Дополнительные пункты Where

person ginomessmer    schedule 27.03.2017

Вы должны сделать свой запрос следующим образом:

$query->where('titre', 'like', '%'.$term.'%')
    ->where('etat','!=','9')
    ->where(function ($query) {
            $query->where('type', 0)
                  ->orWhere('type', 1);
        })

если вам необходимо использовать orWhere, в противном случае используйте whereBetween. Ссылка здесь

person Learner    schedule 27.03.2017
comment
+1 за фактический ответ на заданный вопрос. Ответ на заданный вопрос полезен для людей, которые ищут в Google конкретную вещь. - person Mfoo; 15.11.2017

Вы можете использовать тот же запрос для сравнения с динамическим значением следующим образом:

$valSearch='abcd';
$query->where('field1', 'like', '%'.$val1.'%')
    ->where('field2','!=','2')
    ->where(function ($query) use ($valSearch) {
            $query->where('field3', $valSearch)
                  ->orWhere('field4', $valSearch);
        })

Запрос будет выполняться как:

field1 like '%{$val1}% AND field2 != 2 AND (field3='abcd' OR field4='abcd')

Это может быть полезно кому-то для последующего использования. Ссылка здесь

person bharat    schedule 01.12.2017