Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel查询将json数据输出为选择列表。如何修改现有代码以连接两个值_Laravel - Fatal编程技术网

Laravel查询将json数据输出为选择列表。如何修改现有代码以连接两个值

Laravel查询将json数据输出为选择列表。如何修改现有代码以连接两个值,laravel,Laravel,我的控制器中有一个预先存在的函数,它将运行一个简单的查询并返回model_名称和id,然后将结果作为json返回 public function getModel($id) { $models = DB::table('model')->where('man_id',$id)->pluck('model_name','id'); return json_encode($models); } 新的要求是在查询中包含一个名为model_num的附加列。计划是连接mod

我的控制器中有一个预先存在的函数,它将运行一个简单的查询并返回model_名称和id,然后将结果作为json返回

public function getModel($id) 
{
    $models = DB::table('model')->where('man_id',$id)->pluck('model_name','id');
    return json_encode($models);
}
新的要求是在查询中包含一个名为model_num的附加列。计划是连接model_name和model_num列

尝试了以下操作,但没有返回任何值,我得到了对json的404响应:

public function getModel($id) 
{
    $models = DB::table("model")->select("id","CONCAT(model_name, '-', model_num) as model")->where("man_id",$id)->pluck('model','id');
    return json_encode($models);
}

我是否遗漏了一些明显的内容?

您正在
select
中使用SQL函数,这些函数可能无法工作。您可以使用
selectRaw

public function getModel($id) 
{
    $models = DB::table("model")
        ->selectRaw("id, CONCAT(model_name, '-', model_num) as model")
        ->where("man_id",$id)
        ->pluck('model','id');
    return response()->json($models); // response()->json() is preferable
}
或者,您可以在PHP端进行连接:

public function getModel($id) 
{
    $models = DB::table("model")
        ->select("id", "model_name" "model_num")
        ->where("man_id",$id)
        ->get()
        ->mapWithKeys(function ($model) {
            return [ $model->id => $model->model_name.'-'.$model->model_num ];
        })
    return response()->json($models);
}
公共函数getModel($id) { $models=DB::table('model')->其中('man_id',$id)->first(); $models->model=$models->model_name.-'.$models->model_num; 返回json_encode($models->pull('model','id');
}

您将
pulk
更改为
get
是故意的吗?为什么不将所有3个属性都删除,然后作为needed@apokryfos这不是故意的,不是。我已经修改了上面的代码。现在我从控制台得到了500个响应。也许资源是您提取json生成的一个选项。