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


How to access a nested field in json with 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
    }
  }
]

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

谢谢。

Try This

        $user       =   User::find($id)->languages->toArray();
        $languages  =   array_column($user, 'name');  
        return Response::make(json_encode($languages), 200)->header('Content-Type', 'application/json');

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

function extract_name($el) {
    return $el['name'];
}
$names = array_map('extract_name', $user->languages);