【问题标题】:Trouble retrieving JSON format array from SQL (Laravel)从 SQL (Laravel) 检索 JSON 格式数组时遇到问题
【发布时间】: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数组循环到视图中,比如获取员工姓名,打印出来。我正在尝试完成这样的事情:

有人可以帮助我吗?有没有更好的方法来实现这一点?提前谢谢你

【问题讨论】:

    标签: mysql sql arrays json laravel


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 1970-01-01
        • 2019-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多