使用orwhere子句的Laravel eloquent orm查询

时间:2017-05-23 10:37:22

标签: php laravel laravel-5 eloquent laravel-eloquent

您好我一直在使用此查询来检索基于orWhere子句的数据

$q->where('created', $date);
$q->where(function ($query) {
  $query->where('gender', 'Male')
        ->where('age', '>=', 18);
})->orWhere(function($query) {
  $query->where('gender', 'Female')
        ->where('age', '>=', 30);   
})->orWhere(function($query) {
  $query->where('gender', 'Orthodox')
        ->where('age', '>=', 35);

第一个orWhere子句工作正常,但第二个不是。它似乎是一个范围问题,即()

2 个答案:

答案 0 :(得分:3)

正确分组您的条件,应该没问题。

$q->where('created', $date);
$q->where(function ($query) {
    $query->where(function ($query) {
        $query->where('gender', 'Male')
            ->where('age', '>=', 18);
    })->orWhere(function ($query) {
        $query->where('gender', 'Female')
            ->where('age', '>=', 30);
    })->orWhere(function ($query) {
        $query->where('gender', 'Orthodox')
            ->where('age', '>=', 35);
    });
});

答案 1 :(得分:1)

使用额外的where()关闭:

$q->where('created', $date);
$q->where(function ($q) {
     $q->orWhere(function($query) {
        $query->where('gender', 'Male')
            ->where('age', '>=', 18);
     })->orWhere(function($query) {
        $query->where('gender', 'Female')
            ->where('age', '>=', 30);   
     })->orWhere(function($query) {
        $query->where('gender', 'Orthodox')
            ->where('age', '>=', 35);
     });
});