2016-05-10 2 views
8

Laravel 5.2 a assez agréable Helpers, je voudrais les utiliser pour faire ce qui suit:Laravel 5.2 plumer() plusieurs attributs de Eloquent Modèle Collection

Je Eloquent Modèle Collection:

$lesson->users(); // returns Eloquent collection of 3 users 

pluck() fonction serait utile, mais il peut obtenir juste un seul paramètre. Cependant, je veux obtenir une sortie avec deux paramètres, id et name, comme ceci:

[ 
1=>['id'=>10,'name'=>'Michael Dook'], 
2=>['id'=>16,'name'=>'Henry Babcock'], 
3=>['id'=>19,'name'=>'Joe Nedd'] 
] 

est-il une solution élégante pour cela?

Répondre

17

Je sais que ce n'est pas la question la plus récente, mais au cas où quelqu'un trébuche sur elle de Google plus tard, voir le Only Collection Method

$lesson->users()->only("id", "name")->toArray(); devrait être ce que vous êtes après.

+1

Dans Laravel 5.2 cela se traduit soit par l'appel à la méthode non définie Illuminate \ Database \ Query \ Builder :: only() 'erreur lors de l'appel' users() 'ou donne une collection vide pour' users' (sans accolades) – Paul

+0

avoir une relation déjà établie? Cela fonctionne bien dans 5.2, comme je l'ai déjà testé dans cette version. – Blake

+0

Êtes-vous sûr de l'avoir testé en '5.2'? Après un examen plus approfondi, cela ne fonctionne pas dans la méthode '5.2.45' ...' Arr :: only' que les deux utilisations 'Illuminate \ Support \ Collection' et' Illuminate \ Database \ Eloquent \ Collection' vérifient en interne seulement au niveau supérieur clés. En supposant 'users()' dans l'exemple est juste une méthode normale et pas une relation, parce que je n'ai aucune idée de ce qui se passe :) – Paul

1

Essayez ceci:

$lesson->users()->select('id', 'name')->get()->toArray(); 
+0

Ceci est valide uniquement pour Laravel 4. Dans Laravel 5, vous obtenez une violation de la contrainte d'intégrité: La colonne dans la liste des champs est ambiguë laravel. – Fusion

+0

cela fait une nouvelle requête à la base de données et n'est donc pas une solution désirée car il dit qu'il a déjà une collection (peut-être déjà altérée/filtrée dans le code réel). – MPS

+0

Vous aurez également des problèmes avec les valeurs ajoutées incluses, puis les tentatives faites pour les convertir en tant que partie du tableau échouent lorsqu'elles sont nulles. – Sam