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 数据的列中的元素

选择查询以使用 BigQuery 对输出 json 中的记录进行分组

laravel 如何呈现模型数据

如何将 Laravel 输出的日期格式更改为 JSON?

从 Json 中选择值以添加到下拉列表

如何将Laravel输出的日期格式更改为JSON?