Laravel Eloquent ИЛИ ГДЕ НЕ НУЛЬ

Я использую пакет Laravel Administrator от frozennode. Короче говоря, я сталкиваюсь с проблемами при отображении результатов, которые были удалены. Я пытаюсь переопределить запрос по умолчанию:

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`

Как я могу это исправить?

11

Решение

Просто добавь withTrashed:

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

Источник

Обновить

В этом случае, вы можете просто добавить orWhereNotNull() вызов:

'query_filter'=> function($query) {
$query->orWhereNotNull('deleted_at');
},
20

Другие решения

Если вы хотите найти удаленную запись (Soft Deleted Record), не используйте Eloquent Model Query.
Вместо этого используйте Db::table query
например
Вместо использования ниже:

$stu = Student::where('rollNum', '=', $rollNum . '-' . $nursery)->first();

использование

$stu = DB::table('students')->where('rollNum', '=', $newRollNo)->first();

0

Eloquent имеет метод для (Laravel 4. * | 5. *):

Model::whereNotNull('sent_at')

Ларавелла 3:
Model::where_not_null('sent_at')

0

Это может быть актуально:

return $this->join($table, $first, $operator, $second, 'right');

(от GitHub).

-3
По вопросам рекламы [email protected]