如何使用Laravel访问json中的嵌套字段?

时间:2016-08-22 17:27:56

标签: php json rest laravel

您好我需要访问json文件中的嵌套字段。我正在使用Laravel 5,我在控制器中有这个:

public function getLanguages($id){
    $user=User::find($id);

    if (!$user)
    {
       return response()->json(['errors'=>array(['code'=>404,'message'=>'No se encuentra un usuario con ese código.'])],404);
    }

    return Response::make(json_encode($user->languages), 200)->header('Content-Type', 'application/json');

}

这是输出:

[
  {
    "id": 1,
    "name": "Español",
    "pivot": {
      "id_user": 1,
      "id_language": 1
    }
  },
  {
    "id": 2,
    "name": "Inglés",
    "pivot": {
      "id_user": 1,
      "id_language": 2
    }
  },
  {
    "id": 3,
    "name": "Alemán",
    "pivot": {
      "id_user": 1,
      "id_language": 3
    }
  }
]

我想访问用户拥有的语言名称,我该怎么做?这是用户和语言之间的多对多关系,通过用户模型更好地访问语言?或从数据透视表访问?

感谢。

2 个答案:

答案 0 :(得分:0)

由于$user->languages是包含这些语言的数组,因此您可以使用array_map,例如

function extract_name($el) {
    return $el['name'];
}

$names = array_map('extract_name', $user->languages);

答案 1 :(得分:0)

试试这个

        $user       =   User::find($id)->languages->toArray();
        $languages  =   array_column($user, 'name');  

        return Response::make(json_encode($languages), 200)->header('Content-Type', 'application/json');