Ano*_*ous 13 php sql administrator laravel eloquent
我正在使用frozennode的Laravel Administrator软件包.长话短说,我在显示软删除的结果时遇到了问题.我正在尝试覆盖默认查询:
select * from `scripts` where `scripts`.`deleted_at` is null group by `scripts`.`id`
Run Code Online (Sandbox Code Playgroud)
要显示已删除的结果和未删除的结果,请以某种方式进行黑客攻击.这不是最优雅的解决方案,但我没有看到任何其他方式来做到这一点.所以,我的目标是这样做:
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null group by `scripts`.`id`
Run Code Online (Sandbox Code Playgroud)
不幸的是我不知道如何使用orWhere()和'is not null'.经过一番研究后,我尝试使用原始SQL块,如下所示:
'query_filter'=> function($query) {
$query->orWhere(DB::raw('`scripts`.`deleted_at` is not null'));
},
Run Code Online (Sandbox Code Playgroud)
但我最终得到了一个额外的SQL,因为它不包括orWhere()中的第二个参数:
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null **is null** group by `scripts`.`id`
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
Jef*_*ert 26
只需添加withTrashed:
'query_filter'=> function($query) {
$query->withTrashed();
},
Run Code Online (Sandbox Code Playgroud)
更新
在这种情况下,您可以添加一个orWhereNotNull()电话:
'query_filter'=> function($query) {
$query->orWhereNotNull('deleted_at');
},
Run Code Online (Sandbox Code Playgroud)