Laravel 5 Eloquent在哪里和哪里

vis*_*ulo 2 php mysql query-builder eloquent laravel-5

我试图从表中获得多个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();    
Run Code Online (Sandbox Code Playgroud)

Lea*_*ner 6

您应该像这样进行查询:

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

如果你有必要想使用orWhere否则使用whereBetween. 参考这里

  • +1 用于实际回答提出的问题。回答所提出的问题有助于人们在谷歌上搜索特定事物。 (2认同)

bha*_*rat 5

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

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

查询将执行为:

field1 like '%{$val1}% AND field2 != 2 AND (field3='abcd' OR field4='abcd')
Run Code Online (Sandbox Code Playgroud)

它可能有助于某些人以后使用。 参考这里


小智 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(); 
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/5.4/queries - 附加Where子句