如何在Laravel中优化代码?

时间:2016-09-28 23:25:08

标签: laravel laravel-5.2 laravel-5.3

我使用以下代码从两个相关表中获取数据:

$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的数组,将其插入到Blade模板的选择列表中。

但我希望逃避一个循环:

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

从请求中获得清晰的收集。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用Laravel Collections https://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();