Laravel 5 Eloquent在哪里和哪里

时间:2017-03-27 10:04:35

标签: php mysql laravel-5 eloquent query-builder

我尝试从包含多个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();    

3 个答案:

答案 0 :(得分:6)

您应该像这样进行查询:

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

如果你有必要想使用orWhere否则使用whereBetween。 Reference Here

答案 1 :(得分:2)

您可以使用以下方式使用相同的查询与动态值进行比较:

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

它可能对某些人有用,以备日后使用。 Reference Here

答案 2 :(得分:1)

改为使用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子句