webentwicklung-frage-antwort-db.com.de

Wie überprüfen Sie bei Eloquent "Wenn nicht Null"?

Wie prüfen Sie, ob ein Feld bei Eloquent nicht null ist?

Ich habe Model::where('sent_at', 'IS NOT', DB::raw('null'))->... ausprobiert, aber es gibt IS NOT als Bindung anstelle eines Vergleichs.

Das sagt DB::getQueryLog() 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
163
Marwelln

Eloquent hat dafür eine Methode (Laravel 4. */5. *);

Model::whereNotNull('sent_at')

Laravel 3:

Model::where_not_null('sent_at')
306
Bas de Groot

Wenn jemand wie ich es mit dem Abfrage-Generator in Laravel 5.2.23 machen möchte, kann das wie -> gemacht werden

 $searchResultQuery = Users::query(); 
 $searchResultQuery->where('status_message', '<>', '', 'and'); // is not null
 $searchResultQuery->where('is_deleted', 'IS NULL', null, 'and'); // is null 

Oder mit Umfang im Modell:

public function scopeNotNullOnly($query){

    return $query->where('status_message', '<>', '');
}
15
Atiqur

Wenn Sie die DB-Fassade verwenden wollten :

DB::table('table_name')->whereNotNull('sent_at')->get();

7
Jon

Wir können benutzen

Model::whereNotNull('sent_at');

Oder

Model::whereRaw('sent_at is not null');
2
srmilon

Ich sehe, dass diese Frage etwas alt ist, aber ich bin auf sie 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 gerade mit Laravel Tinker mit ein paar Daten auf der CLI herumgespielt habe. 

Ich habe einige Dinge, die ich ausprobiert habe, die für mich gearbeitet haben, und andere, die nicht hoffentlich anderen geholfen haben.


Ich hatte keinen Erfolg beim Laufen:

    MyModel::whereNotNull('deleted_by')->get()->all();             // []
    MyModel::where('deleted_by', '<>', null)->get()->all();        // []
    MyModel::where('deleted_by', '!=', null)->get()->all();        // []
    MyModel::where('deleted_by', '<>', '', 'and')->get()->all();   // []
    MyModel::where('deleted_by', '<>', null, 'and')->get()->all(); // []
    MyModel::where('deleted_by', 'IS NOT', null)->get()->all();    // []

Alle oben genannten Werte haben ein leeres Array für mich zurückgegeben


Ich hatte jedoch Erfolg beim Laufen:

    DB::table('my_models')->whereNotNull('deleted_by')->get()->all(); // [ ... ]

Dies gab alle Ergebnisse in einem Array wie erwartet zurück. Hinweis: Sie können die Funktion all() löschen und anstelle eines Arrays eine Illuminate\Database\Eloquent\Collection zurückholen, wenn Sie möchten. 

0
Anovative
$searchResultQuery = Users::query(); 
 $searchResultQuery->where('status_message', '<>', '', 'and'); // is not null
 $searchResultQuery->where('is_deleted', 'IS NULL', null, 'and'); // is null 
0
pardeep

in Laravel 5.4 dieser Code Model :: whereNotNull ('column') hat nicht funktioniert, müssen Sie get () wie dieses hinzufügen. Model :: whereNotNull ('column') -> get (); das funktioniert gut für mich :)