¿Cómo se verifica si un campo no es nulo con Eloquent?
Lo intenté Model::where('sent_at', 'IS NOT', DB::raw('null'))->...pero da IS NOTcomo un enlace en lugar de una comparación.
Esto es lo que DB::getQueryLog()dice al respecto:
'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

!=lugar de NO ES.Respuestas:
Eloquent tiene un método para eso (Laravel 4. * / 5. *);
Laravel 3:
fuente
whereNull('deleted_at')y obtuve mi consulta ejecutándose.whereNotNull()método (y varios otros que no estaban documentados anteriormente) se agregaron a la documentación en la versión 5.1: laravel.com/docs/5.1/queries#where-clauses .Si alguien como yo quiere hacerlo con el generador de consultas en Laravel 5.2.23, puede hacerlo como ->
O con alcance en el modelo:
fuente
'and'significa?public function where($column, $operator = null, $value = null, $boolean = 'and');y ubicación -".....\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php"Si desea utilizar la fachada DB :
DB::table('table_name')->whereNotNull('sent_at')->get();fuente
Nosotros podemos usar
O
fuente
Veo que esta pregunta es un poco vieja, pero la encontré buscando una respuesta. Aunque no tuve éxito con las respuestas aquí, creo que esto podría deberse a que estoy en PHP 7.2 y Laravel 5.7. o posible porque solo estaba jugando con algunos datos en la CLI usando Laravel Tinker.
Tengo algunas cosas que probé que funcionaron para mí y otras que no lo hicieron, espero que ayuden a otros.
No tuve éxito al ejecutar:
Todo lo anterior me devolvió una matriz vacía
Sin embargo, tuve éxito al ejecutar:
Esto devolvió todos los resultados en una matriz como esperaba. Nota: puede soltar
all()y recuperar Illuminate \ Database \ Eloquent \ Collection en lugar de una matriz si lo prefiere.fuente
en laravel 5.4 este código
Model::whereNotNull('column')no funcionaba, debe agregarget()como este,Model::whereNotNull('column')->get();este funciona bien para mí.fuente
Si desea buscar registros eliminados (registro eliminado suave), no utilice la consulta de modelo elocuente. En su lugar, use Db :: consulta de tabla, por ejemplo, en lugar de usar a continuación:
Utilizar:
fuente
Db::tablepara encontrar los registros eliminados. Puede filtrarlos con el métodowithTrashed(), como se dice en los documentos: laravel.com/docs/5.3/eloquent