2017-02-22 4 views
0

基本的に、関連するすべての行を「メイン」行にグループ化したいと思います。行を関連項目にグループ化します。 [Laravel]

私はこれらの3つのテーブル

ユーザー

| id | user | 
|----|------| 
| 1 | John | 
| 2 | Jane | 

ファイル

| id | name | 
|----|----------| 
| 1 | Recipes | 
| 2 | Calendar | 
| 3 | Contacts | 

file_user

| user_id | file_id | 
|---------|---------| 
| 1 | 1 | 
| 1 | 2 | 
| 2 | 3 | 
を持っている(大体それを説明する場合には申し訳ありませんが、私はかなりのMySQLで吸います)

そして、私はこの結果を得るために必要があります。

{ 
    { 
    'user': 'John', 
    'files': { 
     'Recipes', 
     'Calendar' 
    } 
    },{ 
    'user': 'Jane', 
    'files': { 
     'Contacts' 
    } 
    } 
} 

私は

{ 
    { 
    'Recipes' 
    }, 
    { 
    'Calendar' 
    }, 
    { 
    'Contacts' 
    } 
} 
それは動作しません

table('users') 
    ->join('file_user', 'user.id', '=', 'file_user.user_id') 
    ->join('files', 'file_user', '=', 'files.id') 

、私は(だけでファイルを選択する)のようなsomethigを取得し、このような何かをやりました

私はあなたが私を理解し、私にヒントを与えることができれば幸いです。

+0

多くの関係やピボットテーブルのhttpに多くを処理するためのlaravels方法について何かをお読みください。 com/pivot-tables-many-many-relationships/ –

+0

あなたはphpを使ってそれを行うことができますuser-file結果 –

答えて

0

さて、あなたは雄弁な関係を使用しているとJSONでfilesは、実際の配列であると仮定すると:// laraveldaily:

$users = User::with('files')->get(); 

$data = $users->map(function ($user) { 
    return [ 
     'user' => $user->user, 
     'files' => $user->files->pluck('name') 
    ]; 
}); 
関連する問題