2016-09-28 12 views
0

は、私は2つの関連するテーブルからデータを取得するために、次のコードを使用します。Laravelでコードを最適化する方法は?

$arr = []; 
$objectModel = new ProductCategory(); 
$objectModel::$language = 2; 

$subcategories = $objectModel::with("translate", "parent")->get(); 

foreach($subcategories as $key => $item) { 
    $arr[$item->translate()->first()->objectId] = $item->translate()->first()->name; 
} 

array_unshift($arr, 'Select category'); 
return $arr; 

結果では、コードのこの部分を私はブレードテンプレートの選択リストでこれを挿入するためにkey => valueの配列を取得します。

foreach($subcategories as $key => $item) { 
    $arr[$item->translate()->first()->objectId] = $item->translate()->first()->name; 
} 

そして、リクエストから明確なコレクションを取得:

は、しかし、私はループを脱出することを望みます。どうしたらいいですか?

答えて

1

あなたはなぜここ `)(`集めるでしょう?Laravel Collectionshttps://laravel.com/docs/5.3/collections

$arr = ProductCategory::with("translate", "parent")->get() 
      ->mapWithKeys(function ($item, $key) { 
       return [$item->translate()->first()->objectId => $item->translate()->first()->name]; 
      }) 
      ->all(); 
+0

を使用することができますかドキュメントでは、 'Eloquentクエリの結果は常にCollectionインスタンスとして返されます.''コレクションの作成のヒントを参照してください。 – Doom5

関連する問題