【问题标题】:How to optimize code in Laravel?如何优化 Laravel 中的代码?
【发布时间】:2016-09-28 23:25:08
【问题描述】:

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

$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;
}

并从请求中获得明确的收藏。我该怎么做?

【问题讨论】:

    标签: laravel laravel-5.2 laravel-5.3


    【解决方案1】:

    你可以使用 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();
    

    【讨论】:

    • 为什么在这里使用collect()?文档说The results of Eloquent queries are always returned as Collection instances. 请参阅Creating Collections 上的提示。
    猜你喜欢
    • 2015-10-20
    • 2022-11-23
    • 1970-01-01
    • 2015-09-19
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多