Laravel Красноречивый ИЛИ ГДЕ НЕ РАВНО НУЛЮ
Я использую пакет администратора Laravel из 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() с "не равно нулю". После немного изучив, я попробовал это с помощью необработанного блока 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`
Как я могу это исправить?
3 answers
Просто добавьте withTrashed
:
'query_filter'=> function($query) {
$query->withTrashed();
},
Обновление
В этом случае вы, вероятно, можете просто добавить вызов orWhereNotNull()
:
'query_filter'=> function($query) {
$query->orWhereNotNull('deleted_at');
},
Если вы хотите найти удаленную запись (Мягко удаленную запись), не выполняйте запрос модели пользователя Eloquent.
Вместо этого используйте Db::table query
например,
Вместо использования ниже:
$stu = Student::where('rollNum', '=', $rollNum . '-' . $nursery)->first();
Использовать
$stu = DB::table('students')->where('rollNum', '=', $newRollNo)->first();
Это может иметь отношение к делу:
return $this->join($table, $first, $operator, $second, 'right');
(из GitHub).