Laravel Eloquent ODER WO IST NICHT NULL
Ich bin mit dem Laravel-Administrator-Paket von frozennode. Lange Geschichte kurz, ich bin in Probleme laufen, wenn die Ergebnisse angezeigt werden, die soft-gelöscht. Ich bin versucht, um die Standardeinstellung zu überschreiben-Abfrage:
select * from `scripts` where `scripts`.`deleted_at` is null group by `scripts`.`id`
Zur Darstellung von Ergebnisse gelöscht und nicht gelöscht, irgendwie zu hacken. Es ist nicht die eleganteste Lösung, aber ich sehe keinen anderen Weg, es zu tun. Also, mein Ziel ist es, dies zu tun:
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null group by `scripts`.`id`
Leider weiß ich nicht, wie zu verwenden orWhere() mit 'ist nicht null'. Auf der Suche nach etwas, ich versuchte es mit einem raw-SQL-block, wie diese:
'query_filter'=> function($query) {
$query->orWhere(DB::raw('`scripts`.`deleted_at` is not null'));
},
Aber ich landete mit einem extra Stück von SQL resultierende, nicht einschließlich den zweiten parameter in orWhere():
select * from `scripts` where `scripts`.`deleted_at` is null or `scripts`.`deleted_at` is not null **is null** group by `scripts`.`id`
Wie kann ich dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie einfach
withTrashed
:Quelle
Update
In diesem Fall, Sie können sich wahrscheinlich fügen Sie einfach ein
orWhereNotNull()
nennen:Wenn Sie wollen, suchen gelöschten Datensatz (Soft Gelöschter Datensatz), nicht Benutzer-Eloquent-Model Query.
Stattdessen
Db::table query
e.g
Anstatt Unten:
$stu = Student::where('rollNum', '=', $rollNum . '-' . $nursery)->first();
Verwenden
$stu = DB::table('students')->where('rollNum', '=', $newRollNo)->first();
Model::whereNotNull('sent_at')
Diese relevant sein könnte:
(aus GitHub).