2016-08-22 4 views
0

こんにちは私は、jsonファイル内のネストされたフィールドにアクセスする必要があります。私はLaravel 5を使用していると私は、コントローラでこれを持っている:Laravelでjsonのネストされたフィールドにアクセスするには?

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 
    } 
    } 
] 

私は、ユーザーが持っている言語の名前にアクセスしたい、どのように私はそれを行うことができます?これは、ユーザーと言語の多対多の関係であり、Userモデルを通じて言語へのアクセスが向上していますか?またはピボットテーブルからのアクセス?

ありがとうございました。

+0

を試してみてください? – KmasterYC

答えて

0

あなたはJSONは言語だけの名前が含まれている取得したい意味この

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

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

それは私のために働いた!どうもありがとうございました! –

0

$user->languagesは言語を含む配列なので、array_mapを使用できます。

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

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

あなたの答えをありがとう、私はこのエラーを取得しています:UserController.phpライン153で ErrorException: array_mapを()「extract_name」が見つかりか無効ではない機能、パラメータ1が有効なコールバックであることを期待する関数名 私は私は呼び出しているメソッドの前後に関数を入れましたが、何もできません –

+0

array_map関数は2番目のパラメータで配列が必要で、$ user-> languagesは単純な配列ではないので、任意のフィールドの配列、私はどのような種類の$ user->種類の言語を理解していません –

+0

私は配列の配列を持つ単純なスクリプトでこれをテストしたので、動作するはずです。 JSON出力は辞書の配列を示します。 –

関連する問題