2017-02-22 55 views
0

基本上,我想將所有相關的行分組到它的「主」行。 (很抱歉,如果一個大致解釋一下,我幾乎在MySQL吸)將行分組到相關的項目中。 [Laravel]

我有這三個表

用戶

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

我需要獲得這樣的結果:

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

我做了這樣的事情

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

它不工作,我得到somethig一樣(只是選擇文件)

{ 
    { 
    'Recipes' 
    }, 
    { 
    'Calendar' 
    }, 
    { 
    'Contacts' 
    } 
} 

我希望你能理解我,並能給我一個提示。

+0

請閱讀一些有關laravels的方式來處理多對多的關係和數據透視表的http:// laraveldaily。 com/pivot-tables-and-many-to-many-relationships/ –

+0

你可以使用php組合用戶文件結果 –

回答

0

好吧,假設你使用的雄辯關係,並在JSON的files實際上是一個數組:

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

$data = $users->map(function ($user) { 
    return [ 
     'user' => $user->user, 
     'files' => $user->files->pluck('name') 
    ]; 
});