【问题标题】:Eloquent - Where Date >= date(now) and whereNull('date')Eloquent - Where Date >= date(now) and whereNull('date')
【发布时间】:2017-02-04 07:27:34
【问题描述】:

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

  • 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);

【问题讨论】:

  • 如果你想要->where('published', '1') 的数据,为什么还要包括->where('available', '1')。可能是这个问题

标签: php laravel eloquent laravel-5.3


【解决方案1】:

你需要使用闭包和orWhereNull():

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

【讨论】:

    【解决方案2】:

    你可以用两个闭包whereorWhere

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

    【讨论】:

      【解决方案3】:

      你同时使用了这两个条件,它永远不会给出结果

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

      尝试使用orWhere

      【讨论】:

      • 如果我使用:->where('saleEndDate', '>=', date("Y-m-d")) ->orWhereNull('saleEndDate'),这将为我提供表中的所有项目日期是
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多