laravel-4 - meaning - updateorcreate laravel
Generador de consultas DB toArray() laravel 4 (7)
La forma más sencilla es usar laravel toArray function en sí misma:
$result = array_map(function ($value) {
return $value instanceof Arrayable ? $value->toArray() : $value;
}, $result);
Estoy tratando de convertir una consulta en una matriz con el método toArray()
pero no funciona para el generador de consultas. ¿Alguna idea para convertirlo?
Ejemplo
DB::table(''user'')->where(''name'',=,''Jhon'')->get()->toArray();
Puedes hacer esto usando el generador de consultas. Solo usa SELECT en lugar de TABLE y GET.
DB::select(''select * from user where name = ?'',[''Jhon'']);
Notas: 1. Se permiten múltiples signos de interrogación. 2. El segundo parámetro debe ser una matriz, incluso si solo hay un parámetro. 3. Laravel limpiará automáticamente los parámetros, para que no tenga que hacerlo.
Más información aquí: http://laravel.com/docs/5.0/database#running-queries
Hmmmmmm, resulta que todavía me devuelve una clase estándar cuando no uso una cláusula where. Encontré esto ayudado
foreach($results as $result)
{
print_r(get_object_vars($result));
}
Sin embargo, get_object_vars no es recursivo, así que no lo use en $ resultados.
Si prefiere usar Query Builder en lugar de Eloquent, aquí están las soluciones.
$result = DB::table(''user'')->where(''name'',=,''Jhon'')->get();
Primera solucion
$array = (array) $result;
Segunda solucion
$array = get_object_vars($result);
Tercera solucion
$array = json_decode(json_encode($result), true);
espero que pueda ayudar
Y otra solucion
$objectData = DB::table(''user'')
->select(''column1'', ''column2'')
->where(''name'', ''='', ''Jhon'')
->get();
$arrayData = array_map(function($item) {
return (array)$item;
}, $objectData);
Es bueno en caso de que necesite solo varias columnas de la entidad.
prueba este
DB::table(''user'')->where(''name'',''Jhon'')->get();
simplemente quite el signo "=". . . .porque usted está tratando de colocar solo el nombre ''jhon''. . . . . . . Espero que te ayude. .
toArray es un método modelo de Eloquent, por lo que necesita un modelo de Eloquent, intente esto:
User::where(''name'', ''='', ''Jhon'')->get()->toArray();
Tenga en cuenta que, aparentemente, la opción que se presenta a continuación ya no se admite desde Laravel 5.4 (gracias @Alex).
En Laravel 5.3 y más abajo, hay un método para establecer el modo de recuperación para consultas selectas.
En este caso, podría ser más eficiente hacer:
DB::connection()->setFetchMode(PDO::FETCH_ASSOC);
$result = DB::table(''user'')->where(''name'',=,''Jhon'')->get();
De esa manera, no perderá tiempo creando objetos y luego volviéndolos a convertir en arreglos.