laravel Eloquent - Where Date >= date(now) and whereNull('date')

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/42037746/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 15:15:55  来源:igfitidea点击:

Eloquent - Where Date >= date(now) and whereNull('date')

phplaraveleloquentlaravel-5.3

提问by Crni

I get all items from a table where:

我从表中获取所有项目,其中:

  • endDateis >= now
  • endDateis NULL
  • publishedequals 1.
  • endDate是 >= 现在
  • endDateNULL
  • published等于1.

This is what I have, but it gives me 0 items:

这就是我所拥有的,但它给了我 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);

回答by Alexey Mezenin

You need to use a closure and the orWhereNull():

您需要使用闭包和orWhereNull()

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

回答by Dilpesh

You can do with two closure whereand orWhere:

您可以使用两个闭包whereorWhere

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

回答by Subhash Chavda

You are using both condition , which never give result

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

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

Try to use orWhere

尝试使用 orWhere