Laravel / Eloquent WHERE NOT SUBQUERY
Posted
技术标签:
【中文标题】Laravel / Eloquent WHERE NOT SUBQUERY【英文标题】: 【发布时间】:2017-08-30 02:48:41 【问题描述】:我无法设置这样的负面条件:
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
【问题讨论】:
我不认为你的操作数是正确的。你到底在检查什么? 他们确实不是,我会编辑并完全指定 基本上我想做的是:***.com/questions/325933/… 【参考方案1】:你可以玩逻辑
$query = $query->where(function ($query) use ($first_day, $last_day)
$query->where('last_day', '>', $first_day);
$query->where('first_day', '>', $last_day);
);
【讨论】:
我不认为逻辑是一样的,它不符合条件:“艾伦区间代数”:en.wikipedia.org/wiki/Allen%27s_interval_algebra 更改:$query->where('first_day', '>', $last_day);到 $query->where('first_day', '***.com/questions/43233652/…【参考方案2】:根据此处找到的答案恢复约束:Eloquent mysql statement : WHERE NOT(A OR B)
$query = $query->where('last_day', '>', $first_day)->where('first_day', '>', $last_day);
【讨论】:
以上是关于Laravel / Eloquent WHERE NOT SUBQUERY的主要内容,如果未能解决你的问题,请参考以下文章
Eloquent:find() 和 where() 用法 laravel
Laravel Eloquent - 返回 Where Has + Where [重复]
如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)
如何使用 Laravel Eloquent 创建多个 Where 子句查询?