Имея пользователей, компании и сводную таблицу company_user: Как получить компании, отсортированные по количеству пользователей?Laravel Eloquent рассчитывает многие на многие отношения
Следующий запрос - почти это. Только проблема в том, что я просто получаю компании, у которых хотя бы один пользователь. Каждая компания, не имеющая отношения к пользователю, не учитывается.
$companies = Company::->with('users')
->join('company_user', 'companies.id', '=', 'company_user.company_id')
->selectRaw('companies.*, count(*) as `aggregate`')
->groupBy('companies.id')
->orderBy('aggregate', 'desc')
->get();
Пример вывода должен быть:
company_1 (users: 4)
company_2 (users: 2)
company_3 (users: 0)
company_4 (users: 0)
Вывод с выше запроса:
company_1 (users: 4)
company_2 (users: 2)
Подойдя ближе. Теперь у меня есть '' '' company_1 (пользователей: 4); company_3 (пользователей: 0); company_4 (пользователей: 0); company_2 (пользователи: 2) '' ' – Kristo
@Kristo Но это не ваш желаемый результат? –
company_2 с двумя пользователями не в порядке ... это за компаниями без пользователей – Kristo