首页 > 解决方案 > 使用 Laravel 从数据库中返回嵌套的 Json 作为数组

问题描述

我的数据库中有这个嵌套的 json

 {

"skills":{
    "skill1":{
        "description":"deal 100 damage",
        "cost":2,
        "name":"basic skill"
    },
        "skill2":{
        "description":"deal 900 damage",
        "cost":1,
        "name":"special skill"
    }
}
}

但是当我从我的数据库中获取这个 json 时,它返回一个字符串(image1)

图像1 我使用 laravel 从数据库中获取数据。

 public function list(){
        $data = Cd::all();
        return $data;  
  }

我希望这个json像邮递员预览(image2)中一样,一个数组,所以我可以访问它的属性,

例如:在 foreach 之后,我可以访问“skill1->description”、cost 等。

我怎样才能做到这一点 ?

图2

标签: arraysjsonlaravelmultidimensional-array

解决方案


在您的 Cd 模型中,您应该投射您的“技能”属性:

class Cd extends Model 
{
 protected $casts = ['skills'=>'array'];
.... 
}

通过使用 '$casts' 您的模型将自动将 json 字段转换为字符串而不是纯字符串

有关数组和 json 转换的更多信息:

https://laravel.com/docs/7.x/eloquent-mutators#array-and-json-casting


推荐阅读