Eloquent - 日期> =日期(现在)和whereNull('日期')

时间:2017-02-04 07:27:34

标签: php laravel eloquent laravel-5.3

我从表格中获取所有项目:

  • endDate是> = now
  • endDateNULL
  • published等于1

这就是我所拥有的,但它给了我0项:

$items = Items::orderBy(\DB::raw('RAND()'))
  ->where('endDate', '>=', date("Y-m-d"))
  ->whereNull('endDate')
  ->where('published', '1')
  ->whereIn('cid', $this->activeId)
  ->orderBy('id')
  ->paginate(4);

3 个答案:

答案 0 :(得分:12)

您需要使用闭包和orWhereNull()

->where(function($) {
    $q->where('endDate', '>=', date("Y-m-d"))
      ->orWhereNull('endDate');
})

答案 1 :(得分:2)

您可以使用两个句柄whereorWhere

->where(function($query) {
    $query->where('endDate', '>=', date("Y-m-d"))
      ->orWhere('endDate',NULL);
})

答案 2 :(得分:1)

你正在使用两个条件,它永远不会给出结果

->where('endDate', '>=', date("Y-m-d"))
->whereNull('endDate')

尝试使用orWhere