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

问题描述 投票:5回答:3

我从表中得到所有项目:

  • endDate是> =现在
  • 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);
php laravel eloquent laravel-5.3
3个回答
13
投票

你需要使用一个闭包和orWhereNull()

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

2
投票

你可以用两个关闭whereorWhere

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

1
投票

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

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

尝试使用orWhere

© www.soinside.com 2019 - 2024. All rights reserved.