Это может быть моим ограниченным пониманием laravel, но я застрял в логике c реализации метода, доступного в Laravel Коллекциях.
У меня есть таблица users
и subscriptions
таблица со взаимно-однозначным отношением между User
и Subscription
.
. Я хочу получить коллекцию users
, сгруппированную по столбцу из таблицы subscriptions
.
Структура таблицы subscription
:
|Subscriptions|
-----------------
| user_id | year | ... | created_at |
У меня есть отношение, созданное на User
модель subscription
, которое создает отношение один к одному.
Я могу получить все users
с соответствующими им subscriptions
, используя запрос ниже.
$users = User::with('subscription')->get()
Поскольку я вернулся с набором пользователей на $users
, я пытаюсь сгруппировать его по year
$groupedUsers = $users->groupBy('year');
Но проблема здесь в том, что он выдает n
SQL запросов, что не является моим намерением. Когда я использую groupBy()
с коллекциями, не означает ли это, что он будет работать с логи c внутри себя (массива), а не с более чем SQL Запросы ??
Также указывается функция обратного вызова isn тоже не помогает Я думаю, что logi c, который я реализую здесь с помощью моей функции обратного вызова, на самом деле не удовлетворяет тому, чего я пытаюсь достичь. Должно быть что-то, чего я не понимаю или что-то делаю неправильно.
$user = User::with(['subscription' => function($query){
$query->groupBy('year');
}])->get();