2017-10-04 1 views
1

Laravel 5.5 voici les collections:Laravel Collections-> keyBy trouve des clés similaires

$collections = collect(['name' => 'Rob'], ['nickname' => 'Robby']);

les deux méthodes:

$collections->keyBy('name') 
$collections->keyBy('nickname') 

résultat EQUIL retour

Collection {#246 ▼ 
    #items: array:1 [▼ 
    "" => "Rob" 
    ] 
} 

comme moi ça a l'air mauvais ...

+0

Quelle est la structure de données à laquelle vous vous attendez? –

Répondre

0

Votre problème est que votre collection est pas bien formaté, faire comme ceci:

$collections = collect([ //main collection array 
      [ 'name' => 'Rob1', 'nickname' => 'Robby1' ] //object 0 inside collection array with well formated keys => values 
     ]); 

Maintenant, lorsque vous utilisez:

$collections->keyBy('name') 
$collections->keyBy('nickname') 

Il fonctionnera comme détecté

+0

got it ... mon mauvais je pensais que keyBy cherche collection par clé. Mais keyBy juste remplacer l'index dans (clé) –

1

Je pense que vous devriez passer un paramètre comme un tableau .. Essayez cette

$collections = collect([['name' => 'Rob'], ['nickname' => 'Robby']]); 
0

si les résultats sont

Collection {#246 ▼ 
    #items: array:2 [▼ 
    "Rob" => array:1 [▼ 
     "name" => "Rob" 
    ] 
    "" => array:1 [▼ 
     "nickname" => "Robby" 
    ] 
    ] 
} 

et

Collection {#246 ▼ 
    #items: array:2 [▼ 
    "" => array:1 [▼ 
     "name" => "Rob" 
    ] 
    "Robby" => array:1 [▼ 
     "nickname" => "Robby" 
    ] 
    ] 
} 

semble toujours à la recherche non valide dans les collections .. et

$collections->keyBy('nick')

retours

Collection {#246 ▼ 
    #items: array:1 [▼ 
    "" => array:1 [▼ 
     "nickname" => "Robby" 
    ] 
    ] 
} 
+0

tous les trois keyBy ne sont pas vides, même le dernier –