2017-12-12 20 views
0

私がしようとしているのは、オブジェクトの配列からキーと値のペアを持つ配列を返す必要があるということです。Laravel Collectionsを使ったオブジェクトのリファクタリングが失敗する

apiから、このようなオブジェクトが表示されます。

array:8 [▼ 
    0 => TargetingSearch {#229 ▼ 
    #data: array:6 [▼ 
     "id" => "6005609368513" 
     "name" => "Software" 
     "audience_size" => 565991450 
     "path" => array:4 [▶] 
     "description" => "" 
     "topic" => "Technology" 
    ] 
    #_type_checker: TypeChecker {#228 ▶} 
    } 

簡単な方法は、オブジェクトをループして値を配列にプッシュすることです。

$codes = []; 
    foreach($objects as $object) { 
     $codes[] = [ 
     'id' => $object->id, 
     'name' => $object->name, 
     ]; 
    } 

これは私に必要なものです。

['id' => 321, 'name' => "item1"], 
['id' => 321, 'name' => "item1"], 
['id' => 321, 'name' => "item1"], 

私はこれを管理するのが少し難しいと思っています。私がやろうとしているのは少し読みやすいものです。

たとえば、Laravelコレクションクラスを使用すると、このようなことができます。

$codes = collect($objects)->pluck('id', 'name')->toArray(); 

ここでの問題は、キーが返されないことです。

["item1" => "123"], 
["item2" => "321"], 
["item3" => "213"], 

私は

$codes = collect($objects)->only('id', 'name')->toArray(); 

を使用している場合は、オブジェクト自体が全てを台無しにされているため、それは空の配列を返します。

誰でもこれを解決する方法を知っていますか?あなたが使う "マップ" することができます

答えて

1

方法

collect($objects)->map(function ($item) { 
     return [ 
      'id' => $item->id, 
      'name' => $item->name 
     ]; 
}); 
関連する問題