$ordersAll = Order::whereIn('status',[0,2])->get();
$orders = $ordersAll->where('status', 0)->get(); // либо через фильтр
$ordersWin = $ordersAll->where('status', 2)->get();
// Orders
$ordersAllWin = $ordersAll->where('status', 2)->get(); // дубль запроса
$performer = $user->where('role_id', 1)->count();
$customer = $user->where('role_id', 2)->count();
// пример из документации
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
await client.download_media(msg, './media/', progress_callback=callback)
Другой вариант через callback и async всё делать. Там простая проверка завершен код или нет.
Кидаю код одного из проектов:
Суть довольно простая: создаем контроллер (указывая максимум). А потом просто цикле запускаем th.add_work(work, ). Если есть свободный поток, он добавится, если нет, то ничего не делается. Раз в час прекращаются запускаться потоки, чтобы запустить эксклюзивные задачи в один поток (у меня банально - закрытие всех приложений и удаление временных файлов).
clean_threads - если задача выполнилась, то она будет "освобождена" и удалена из списка