Wie können Sie mit Eloquent überprüfen, ob ein Feld nicht null ist ?
Ich habe es versucht, Model::where('sent_at', 'IS NOT', DB::raw('null'))->...
aber es gibt IS NOT
eine Bindung anstelle eines Vergleichs.
Das DB::getQueryLog()
sagt es darüber:
'query' => string 'select * from my_table where sent_at = ? and profile_id in (?, ?) order by created_at desc' (length=101)
'bindings' =>
array (size=3)
0 => string 'IS NOT' (length=6)
1 => int 1
2 => int 4
!=
anstelle von IS NOT zu verwenden.Antworten:
Eloquent hat dafür eine Methode (Laravel 4. * / 5. *);
Laravel 3:
quelle
whereNull('deleted_at')
und meine Abfrage ausgeführt.whereNotNull()
Methode (und mehrere andere, die zuvor nicht dokumentiert waren) wurden der Dokumentation in Version 5.1 hinzugefügt: laravel.com/docs/5.1/queries#where-clauses .Wenn jemand wie ich dies mit dem Abfrage-Generator in Laravel 5.2.23 tun möchte, kann dies wie folgt erfolgen: ->
Oder mit Umfang im Modell:
quelle
'and'
steht das?public function where($column, $operator = null, $value = null, $boolean = 'and');
und Ort -".....\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php"
Wenn Sie die DB-Fassade verwenden möchten :
DB::table('table_name')->whereNotNull('sent_at')->get();
quelle
Wir können benutzen
Oder
quelle
Ich sehe, dass diese Frage etwas alt ist, aber ich bin darauf gestoßen und habe nach einer Antwort gesucht. Obwohl ich mit den Antworten hier keinen Erfolg hatte, denke ich, dass dies daran liegen könnte, dass ich auf PHP 7.2 und Laravel 5.7 bin . oder möglich, weil ich nur mit Laravel Tinker mit einigen Daten auf der CLI herumgespielt habe.
Ich habe einige Dinge ausprobiert, die für mich funktioniert haben, und andere, von denen ich nicht hoffe, dass sie anderen helfen.
Ich hatte keinen Erfolg beim Laufen:
Alle oben genannten haben ein leeres Array für mich zurückgegeben
Ich hatte jedoch Erfolg beim Laufen:
Dies gab alle Ergebnisse in einem Array zurück, wie ich erwartet hatte. Hinweis: Sie können das Feld löschen
all()
und eine Illuminate \ Database \ Eloquent \ Collection anstelle eines Arrays zurückerhalten, wenn Sie dies bevorzugen.quelle
In Laravel 5.4 funktionierte dieser Code
Model::whereNotNull('column')
nicht. Sie müssen ihnget()
wie diesen hinzufügen. Dieser CodeModel::whereNotNull('column')->get();
funktioniert gut für mich.quelle
Wenn Sie nach gelöschten Datensätzen suchen möchten (Soft Deleted Record), verwenden Sie Eloquent Model Query nicht. Verwenden Sie stattdessen die Abfrage Db :: table, z. B. Anstatt Below:
Verwenden:
quelle
Db::table
, um die weich gelöschten Datensätze zu finden. Sie können sie mit der Methode filternwithTrashed()
, wie in den Dokumenten angegeben: laravel.com/docs/5.3/eloquent