从 SQL (Laravel) 检索 JSON 格式数组时遇到问题
Posted
技术标签:
【中文标题】从 SQL (Laravel) 检索 JSON 格式数组时遇到问题【英文标题】:Trouble retrieving JSON format array from SQL (Laravel) 【发布时间】:2021-02-08 06:49:24 【问题描述】:我在这里寻求帮助。
我一直在考虑将 JSON 数组存储到 mysql 的列中并检索它们的数据。
问题是我还不知道该怎么做。
我设计了一个名为 employees 的表,其中包含以下字段:
id:主要标识符 json:json数组被保存的地方
看起来像这样:
我需要的是循环(迭代)通过 json 字段中的数组。我想我是用这段代码来获取数据的:
public function testjson()
$arr = DB::table('employees')
->where('json->name', 'John')
->get();
return view('desktop.templates.testing', [
'data' => json_decode($arr, true),
]);
在循环进入视图时,我无法访问该数组,尽管我尝试了很多。
不知道怎么把json数组循环到视图中,比如获取员工姓名,打印出来。我正在尝试完成这样的事情:
有人可以帮助我吗?有没有更好的方法来实现这一点?提前谢谢你
【问题讨论】:
【参考方案1】:我认为你应该在这类东西上使用 Laravel 模型。
例如为 User.php 制作模型 php
并在模型中添加以下代码
protected $casts = [
'json' => 'array',
];
它会自动完成框下的所有事情。
$data = User::where('json->name', 'Muhammad')->first();
foreach ($data->json as $key => $value)
echo $value;
【讨论】:
【参考方案2】:好的,所以我终于找到了我想要实现的解决方案。
控制器如下所示:
$x = collect(json_decode(Test::all(), true)); // Test:all() gets all values from the table I was working on
return view('desktop.templates.testing', [
'data' => $x
]);
在视图中,现在我可以轻松迭代了:
@foreach ($data as $item)
<h1> $item['json']['name']</h1>
<h2>Age: $item['json']['age']</h2>
<h2>City: $item['json']['city'] </h2>
@endforeach
最终结果:
感谢大家的努力。希望这能帮助更多像我这样的人:D
【讨论】:
以上是关于从 SQL (Laravel) 检索 JSON 格式数组时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Vue SPA:如何从 Laravel 正确检索 json 对象并将其打印出来?
从数据库中检索数据并在 json laravel 4 中打印它们