使用 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_name
、middle_name
和last_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 对其进行解码?