您可以使用:
public function scopeActive($query)
{
return $query->where(function($q) {
$q->where(function($q) {
$q->whereDate('startdate', '<', Carbon::now()->toDateString())
->whereDate('enddate', '>', Carbon::now()->toDateString());
})->orWhere(function($q) {
$q->whereDate('startdate', '<', Carbon::now()->toDateString())
->whereNull('enddate');
});
});
}
但因为在这两种情况下,startdate应该是过去的,所以可以使用:
public function scopeActive($query)
{
return $query->whereDate('startdate', '<', Carbon::now()->toDateString())
->where(function($q) {
$q->whereDate('enddate', '>', Carbon::now()->toDateString());
->orWhereNull('enddate');
});
});
}