J'essaie de convertir une requête en un tableau avec la méthode toArray()
mais cela ne fonctionne pas pour le générateur de requêtes. Des idées pour le convertir?
Exemple
DB::table('user')->where('name',=,'Jhon')->get()->toArray();
toArray est une méthode modèle d'Eloquent. Vous devez donc utiliser un modèle Eloquent. Essayez ceci:
User::where('name', '=', 'Jhon')->get()->toArray();
Si vous préférez utiliser Query Builder au lieu d’Eloquent, voici les solutions
$result = DB::table('user')->where('name',=,'Jhon')->get();
Première solution
$array = (array) $result;
Deuxième solution
$array = get_object_vars($result);
Troisième solution
$array = json_decode(json_encode($result), true);
espérons que cela peut aider
Veuillez noter que l'option présentée ci-dessous n'est apparemment plus supportée à partir de Laravel 5.4 (merci @Alex).
Dans Laravel 5.3 et inférieur, il existe une méthode pour définir le mode de récupération pour les requêtes sélectionnées.
Dans ce cas, il pourrait être plus efficace de faire:
DB::connection()->setFetchMode(PDO::FETCH_ASSOC);
$result = DB::table('user')->where('name',=,'Jhon')->get();
De cette façon, vous ne perdrez pas de temps à créer des objets puis à les reconvertir en tableaux.
Et une autre solution
$objectData = DB::table('user')
->select('column1', 'column2')
->where('name', '=', 'Jhon')
->get();
$arrayData = array_map(function($item) {
return (array)$item;
}, $objectData);
C'est bien dans le cas où vous n'avez besoin que de plusieurs colonnes d'une entité.
Le moyen le plus simple consiste à utiliser la fonction laravel toArray elle-même:
$result = array_map(function ($value) {
return $value instanceof Arrayable ? $value->toArray() : $value;
}, $result);
essaye celui-là
DB::table('user')->where('name','Jhon')->get();
supprimez simplement le signe "=". . . .parce que vous essayez de simplement nommer 'jhon'. . . . . . . J'espère que cela vous aidera. .
Vous pouvez le faire en utilisant le générateur de requêtes. Utilisez simplement SELECT au lieu de TABLE et GET.
DB::select('select * from user where name = ?',['Jhon']);
Remarques: 1. Plusieurs points d'interrogation sont autorisés . 2. Le deuxième paramètre doit être un tableau, même s'il n'y a qu'un seul paramètre . 3. Laravel nettoie automatiquement les paramètres, pour que vous n'ayez pas à le faire.
Plus d'informations ici: http://laravel.com/docs/5.0/database#running-queries
Hmmmmmm, il s'avère que retourne toujours une classe standard pour moi quand je n'utilise pas de clause where. J'ai trouvé cela aidé:
foreach($results as $result)
{
print_r(get_object_vars($result));
}
Cependant, get_object_vars n'est pas récursif, ne l'utilisez donc pas dans $ results.