Очень долго я искал решение для этой проблемы:
Допустим, у нас есть 2 таблицы: одна таблица - таблица клиентов, а вторая - таблица ClientAssignment: таблица ClientAssignment связана с таблицей Clients:
public function assignment()
{
return $this->hasOne(ClientAssignment::class, 'client_id');
}
теперь, когда я хочу посчитать, сколько ClientAssignment имеет клиентов, и я делаю это так:
$users =[1,2,3,4 .....]
$userAssignments = array();
foreach ($users as $user) {
$user_assignments = Client::whereHas('assignment', function ($query) use ($user) {
$query->where('assigned_id', $user);
});
$ua['user_id'] = $user;
$ua['count'] = $user_assignments->count();
array_push($userAssignments, $ua);
}
Код работает хорошо, но он достигает производительности и времени выполнения запроса ~ 20 + секунд на сравнительно небольшой таблице с клиентами из 80 тыс., мой вопрос, может ли быть другой способ сделать то же самое, но с минимальной производительностью и временем выполнения запроса?