Laravel查询以输出json数据作为选择列表。如何修改现有代码以连接两个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel查询以输出json数据作为选择列表。如何修改现有代码以连接两个值相关的知识,希望对你有一定的参考价值。
我的控制器中已有一个预先存在的函数,它将运行一个简单的查询并返回model_name和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')-> where('man_id',$ id)-> first();$ models-> model = $ models-> model_name。 '-'。 $ models-> model_num;返回json_encode($ models-> pluck('model','id');}
以上是关于Laravel查询以输出json数据作为选择列表。如何修改现有代码以连接两个值的主要内容,如果未能解决你的问题,请参考以下文章
如何查询数据库以查找包含来自多选 (Laravel) 的 json 数据的列中的元素