Laravel Выпуск коллекции SQL Запрос - PullRequest
1 голос
/ 24 января 2020

Это может быть моим ограниченным пониманием 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');

Но проблема здесь в том, что он выдает nSQL запросов, что не является моим намерением. Когда я использую groupBy() с коллекциями, не означает ли это, что он будет работать с логи c внутри себя (массива), а не с более чем SQL Запросы ??

Также указывается функция обратного вызова isn тоже не помогает Я думаю, что logi c, который я реализую здесь с помощью моей функции обратного вызова, на самом деле не удовлетворяет тому, чего я пытаюсь достичь. Должно быть что-то, чего я не понимаю или что-то делаю неправильно.

$user = User::with(['subscription' => function($query){
            $query->groupBy('year');
        }])->get();

1 Ответ

1 голос
/ 24 января 2020

Извините за такой глупый вопрос. Просто разобрался.

$groupedUsers = $users->groupBy('subscription.year');

Подойдет. Я отправляю это как ответ, если кто-то застрял с таким вопросом.

Что я до сих пор не понимаю, так это то, почему $users->groupBy('year') выдавал sql запросов. Если кто-то может указать на некоторые ресурсы для чтения, это будет высоко оценено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...