[Laravel] Comment vérifiez-vous "sinon null" avec Eloquent?



Answers

Si quelqu'un comme moi veut le faire avec le constructeur de requête dans Laravel 5.2.23 cela peut être fait comme ->

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

Ou avec la portée dans le modèle:

public function scopeNotNullOnly($query){

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

Comment vérifiez-vous si un champ n'est pas null avec Eloquent?

J'ai essayé Model::where('sent_at', 'IS NOT', DB::raw('null'))->... mais il ne donne IS NOT comme une liaison au lieu d'une comparaison.

Voici ce que DB::getQueryLog() dit:

  '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



On peut utiliser

Model::whereNotNull('sent_at');

Ou

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



Si vous voulez rechercher un enregistrement supprimé (Soft Deleted Record), ne pas user Eloquent Model Query. Au lieu de cela, utilisez la requête Db :: table par exemple Au lieu d'utiliser Below:

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

Utilisation:

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