密钥在第一个位置时如何使用映射作为键值?

时间:2018-11-23 10:40:31

标签: laravel-5

我想做的是从表中获取数据(这是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 . '');
})

但结果是

enter image description here

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

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解您的问题。从我所理解的问题来看,您会得到一个包含数组['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值和键,因此我们有了{{1} }。