【发布时间】:2019-03-07 18:32:33
【问题描述】:
如何用 eloquent 编写这个查询?
SELECT *
FROM `table`
WHERE
!(
((col0 = 'AA') AND (col1 = 'AA'))
OR
((col0 = 'BB') AND (col1 = 'BB'))
)
这是我拥有的 Eloquent 版本:
$query->where(function ($sub_query){
$sub_query->orWhere(function ($sub_sub_query){
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
});
$sub_query->orWhere(function ($sub_sub_query){
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
});
});
我还没有找到可以做的事情!(XXX)
谢谢!
编辑:
我找到了解决办法:
https://laracasts.com/discuss/channels/eloquent/negate-entire-nested-where-clause
有代码:
$query->where(function ($sub_query){
$sub_query->orWhere(function ($sub_sub_query){
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
});
$sub_query->orWhere(function ($sub_sub_query){
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
$sub_sub_query->where(function ($sub_sub_query){
// Some stuff
});
});
}, null, null, 'AND NOT');
【问题讨论】:
-
请发布您的解决方案作为答案。
标签: php mysql laravel eloquent