使用 JSON 解码 Laravel 检索特定数据

Posted

技术标签:

【中文标题】使用 JSON 解码 Laravel 检索特定数据【英文标题】:Retrieve specific data using JSON decode Laravel 【发布时间】:2020-04-08 13:09:01 【问题描述】:

我是 Laravel 的新手。我需要使用 JSON 解码从数据库中检索特定数据。我目前在我的模型中使用$casts 来处理 JSON 编码和解码。

这是我使用 json 编码的插入查询:

$request->validate([
        'subject' => 'required|max:255',
        'concern' => 'required'
    ]);

    $issue = new Issue;
    $issue->subject = $request->subject;
    $issue->url = $request->url;
    $issue->details = $request->concern;
    $issue->created_by = $request->userid;
    $issue->user_data = $request->user_data; //field that use json encode
    $issue->status = 2; // 1 means draft
    $issue->email = $request->email;
    $issue->data = '';
    $issue->save();

user_data 包含"id":37,"first_name":"Brian","middle_name":"","last_name":"Belen","email":"arcega52@gmail.com","username":"BLB-Student1","avatar":"avatars\/20170623133042-49.png"

这是我的输出:

$issue->user_data

我只需要检索first_namemiddle_namelast_name。我应该如何实现这一目标?提前谢谢你!!!!!!

【问题讨论】:

何时收到所有用户数据? 如果您使用过模型,您可以获得具体的详细信息,例如 Table::select('first_name','middle_name ')->where('id', 1)->get();跨度> 【参考方案1】:

根据您显示的上述代码,它只会将数据插入数据库。要检索数据,您可以使用我在下面编写的查询生成器,也可以查看docs

$users = DB::table('表名')->select('first_name', 'middle_name', 'last_name')->get();

【讨论】:

【参考方案2】:

我会推荐使用资源。它真的非常有用的 laravel 功能。看看这个。这是一个可重用的类。您可以随时随地拨打电话。

php artisan make:resource UserResource

转到您新创建的课程App/Http/Resources/UserResource.php 并定义您希望在回复中包含的列。

public function toArray($request) 
return [
  "first_name" => $this->first_name,
  "middle_name" => $this->middle_name,
  "last_name" => $this->last_name
 ]

现在是您的控制器,您可以使用 UserResource,如下所示:

public function index()

    return UserResource::collection(User::all());

或者插入数据后可以返回新添加的数据(f_name, l_name...)

   $user = new User;
   $user->first_name= $request->first_name;
   $user->middle_name= $request->middle_name;
   $user->last_name= $request->last_name;
   $user->save();

   $user_data= new UserResource($user);
   return $user_data;

【讨论】:

以上是关于使用 JSON 解码 Laravel 检索特定数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从其他站点检索 json 数据并使用 cURL 对其进行解码?

解码 laravel 4 输入::json()

Laravel 4 - 将 json 解码到视图中

如何在 laravel 中解码 Json 对象并在 laravel 中应用 foreach 循环

如何在关系表laravel 5.8中解码Json数据

如何在 Laravel 中使用 eloquent 检索每个用户的特定数据