我正在使用Frozennode的Laravel Administrator软件包。长话短说,当显示软删除的结果时,我遇到了问题。我正在尝试覆盖默认查询:

select * from `scripts` where `scripts`.`deleted_at` is null group by `scripts`.`id`

要同时显示已删除的结果和未删除的结果,请以某种方式破解。这不是最优雅的解决方案,但我认为没有其他方法可以做到。因此,我的目标是这样做:
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null group by `scripts`.`id`

不幸的是,我不知道如何将orWhere()与'is not null'一起使用。经过研究后,我使用原始的SQL块进行了尝试,如下所示:
'query_filter'=> function($query) {
    $query->orWhere(DB::raw('`scripts`.`deleted_at` is not null'));
},

但是,我最后得到了一条额外的SQL,导致未在orWhere()中包含第二个参数:
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null **is null** group by `scripts`.`id`

我怎样才能解决这个问题?

最佳答案

只需添加withTrashed:

'query_filter'=> function($query) {
    $query->withTrashed();
},

Source

更新

在这种情况下,您可能只需添加一个orWhereNotNull()调用即可:
'query_filter'=> function($query) {
    $query->orWhereNotNull('deleted_at');
},

10-04 20:27