2016-03-17 4 views
3

Я хочу, чтобы достичь какой-то группировки с жадными загрузкамиLaravel Группировка с жадной загрузкой

Когда я сделать что-то вроде этого:

$usersWithDepartments = User::with('department')->get(); 

это выходит:

[ 
    { 
     "userID": 491, 
     "userName": "gigi" 
     "deparment": 
     { 
      "departmentID": 1, 
      "name": "Economy" 
     } 
    }, 
    { 
     "userID": 444, 
     "userName": "gigi2" 
     "deparment": 
     { 
      "departmentID": 1, 
      "name": "Economy" 
     } 
    } 
] 

Но я хочу знать, можно ли сделать что-то вроде этого:

$usersWithDepartments = User::with('department')->groupBy('deparment')->get(); 

для того, чтобы получить JSON как это:

[ 
    { 
     "departmentID": 1, 
     "name": "Economy", 
     "users": 
     [ 
      { 
       "userID": 491, 
       "userName": "gigi"    
      }, 
      { 
       "userID": 444, 
       "userName": "gigi2"    
      }    
     ] 
    } 
] 

Я знаю, что я мог сделать Department::with('users'), но я хочу, чтобы один и тот же запрос выше, для того, чтобы не сделать еще один звонок-запрос

, если это не представляется возможным. Есть ли какие-нибудь другие работы вокруг?

+1

Похоже, 'Департамент :: с («пользователей»)' это именно то, что вы хотите, я не понимаю, что вы желая «сохранить тот же запрос» – Moak

+0

My вопрос - упрощенный пример огромного запроса, в моем исходном запросе у меня почти 4 объединения, в том числе и с активной загрузкой. Я не хочу делать Департамент :: с («пользователями»), потому что это означает снова запустить огромный оригинальный запрос. – ggderas

ответ

1

Да, вы можете сделать это

$usersWithDepartments = User::with('department')->groupBy('departmentID'); 
    $usersWithDepartments->toJson(); 
+0

На самом деле, я получаю столбец «department», который не найден. Я думаю, что параметр в методе groupBy является именем столбца, а не отношением, определенным между моделями. Или я ошибаюсь? – ggderas

+0

Я только что отредактировал название колонки 'departmentID', посмотри на мой отредактированный ответ – undefined

+0

Я просто сделал это и все еще не работал. Он не делает сгруппированный JSON, как в моем вопросе. – ggderas