Php 使用orwhere子句的Laravel雄辩orm查询

Php 使用orwhere子句的Laravel雄辩orm查询,php,laravel,laravel-5,eloquent,laravel-eloquent,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')

嗨,我一直在使用这个查询来检索基于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);

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

对您的条件进行适当分组,应该可以

$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);
    });
});

把你的情况适当地分组,应该会好的

$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);
    });
});

使用附加的
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);
     });
});

使用附加的
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);
     });
});

发布完整查询并修复大括号。您可以转储生成的sql查询并从那里开始..发布完整查询并修复大括号。您可以转储生成的sql查询并从那里开始。。