从 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 检索特定数据

从数据库中检索数据并在 json laravel 4 中打印它们

在 Laravel 4 中从 Jquery Ajax Json 中检索值

如何将json数据检索到laravel控制器

从函数中检索 JSON 和 PHP 值