我想做的是从表中获取数据(这是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对数组进行排序和修改?
答案 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} }。