Laravel / Eloquent没有提问

时间:2017-04-04 18:37:12

标签: php mysql laravel-5 eloquent laravel-eloquent

我无法设置这样的负面情况:

WHERE NOT( "last_day" "<=" $first_day OR "first_day" "<=" $last_day)

我的查询构建器看起来像这个atm:

$query = $query->where(function ($query) use ($first_day, $last_day) {
   $query->where('last_day', '<=', $first_day);
   $query->orWhere('first_day', '<=', $last_day);
});

我希望如此:

$query = $query->whereNot(function ($query) use ($first_day, $last_day) {
  $query->where('last_day', '<=', $first_day);
  $query->orWhere('first_day', '<=', $last_day);
});

回顾一下:我想在负的WHERE条件中使用OR语句。我怎么能做到这一点?

来源:http://baodad.blogspot.nl/2014/06/date-range-overlap.html

2 个答案:

答案 0 :(得分:0)

您可以使用逻辑

$query = $query->where(function ($query) use ($first_day, $last_day) {
   $query->where('last_day', '>', $first_day);
   $query->where('first_day', '>', $last_day);
});

答案 1 :(得分:0)

根据这里找到的答案恢复约束:Eloquent MYSQL statement : WHERE NOT(A OR B)

$query = $query->where('last_day', '>', $first_day)->where('first_day', '>', $last_day);