¿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 NOT
como 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::table
para encontrar los registros eliminados. Puede filtrarlos con el métodowithTrashed()
, como se dice en los documentos: laravel.com/docs/5.3/eloquent