Comment vérifier si un champ n'est pas nul avec Eloquent?
J'ai essayé Model::where('sent_at', 'IS NOT', DB::raw('null'))->...
mais ça donne IS NOT
comme reliure au lieu d'une comparaison.
Voici ce qui en 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
!=
au lieu de IS NOT.Réponses:
Eloquent a une méthode pour cela (Laravel 4. * / 5. *);
Laravel 3:
la source
whereNull('deleted_at')
et j'ai fait exécuter ma requête.whereNotNull()
méthode (et plusieurs autres non documentées précédemment) a été ajoutée à la documentation de la version 5.1: laravel.com/docs/5.1/queries#where-clauses .Si quelqu'un comme moi veut le faire avec le générateur de requêtes dans Laravel 5.2.23, cela peut être fait comme ->
Ou avec portée dans le modèle:
la source
'and'
signifiepublic function where($column, $operator = null, $value = null, $boolean = 'and');
et l'emplacement -".....\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php"
Si vous souhaitez utiliser la façade DB :
DB::table('table_name')->whereNotNull('sent_at')->get();
la source
On peut utiliser
Ou
la source
Je vois que cette question est un peu ancienne mais je l'ai rencontrée à la recherche d'une réponse. Bien que je n'aie pas réussi avec les réponses ici, je pense que cela pourrait être parce que je suis sur PHP 7.2 et Laravel 5.7.ou possible parce que je jouais avec des données sur la CLI en utilisant Laravel Tinker.
J'ai essayé des choses qui ont fonctionné pour moi et pour d'autres, mais qui, je l'espère, aideront les autres.
Je n'ai pas réussi à courir:
Tout ce qui précède a renvoyé un tableau vide pour moi
J'ai cependant réussi à courir:
Cela a renvoyé tous les résultats dans un tableau comme je m'y attendais. Remarque: vous pouvez supprimer le
all()
et récupérer une Illuminate \ Database \ Eloquent \ Collection au lieu d'un tableau si vous préférez.la source
dans laravel 5.4 ce code
Model::whereNotNull('column')
ne fonctionnait pas, vous devez ajouterget()
comme celui-ciModel::whereNotNull('column')->get();
celui-ci fonctionne bien pour moi.la source
Si vous souhaitez rechercher un enregistrement supprimé (enregistrement supprimé en douceur), n'utilisez pas Eloquent Model Query. Utilisez plutôt la requête Db :: table, par exemple, au lieu d'utiliser ci-dessous:
Utilisation:
la source
Db::table
pour trouver les enregistrements supprimés. Vous pouvez les filtrer avec la méthodewithTrashed()
, comme cela est dit dans les documents: laravel.com/docs/5.3/eloquent