首页 > 解决方案 > 当键是第一个时如何使用映射作为键值?

问题描述

我想要做的是从表中获取数据(它是 ajax 请求),排序并发送到视图。希望在选择框选项中显示。我必须用值更改 id 以使 JS 按值排序。

快速示例

ModelVehicle::where('make_id', $request->make_id)->orderBy('name')->pluck('id', 'name');   

和JS

$("#model_id").empty();
    $("#model_id").append(new Option(data.please_select, 0));
    $.each(data.models, function(index, item) {
        $("#model_id").append(new Option(index, item));
    });

在这种情况下,这正是我需要的,但现在我需要使用地图,因为我正在使用语言文件,并且我有下面的代码

Category::find($request->category_id)->orderBy('public_name')->pluck('id', 'public_name')->map(function ($key, $item)  {
    return __('general.' . $item . '');
})

但结果是

在此处输入图像描述

我尝试修改地图功能但没有结果。有什么办法可以在后端做到这一点?还是我应该使用 JS 来排序和修改我的数组?

标签: laravel-5

解决方案


我不确定我是否正确理解了您的问题。形成我理解的问题是你得到一个带有数组['id', 'public_name']而不是['public_name', 'id'].

你不能操纵钥匙,map但你可以做的是:

Category::find($request->category_id)->orderBy('public_name')->pluck('public_name', 'id')->map(function ($key, $item)  {
    return __('general.' . $key . '');
})->flip();

这样做是创建一个数组集合['id', 'public_name'],然后map用翻译替换值,然后我们flip得到值和键['public_name', 'id']


推荐阅读