Laravel Eloquent рассчитывает на то, чтоwhereIn() имеет 5 отношений глубиныPhp

Кемеровские программисты php общаются здесь
Anonymous
Laravel Eloquent рассчитывает на то, чтоwhereIn() имеет 5 отношений глубины

Сообщение Anonymous »

Мне нужна ваша помощь, потому что я хочу максимально оптимизировать эти запросы...

Я хочу получить количество оповещений, которые находятся в:

Код: Выделить всё

companies -> sites -> interventions -> purchases -> alerts
Я хочу получить количество действий, которые находятся в:

Код: Выделить всё

contractors -> actions

Код: Выделить всё

companies -> actions
Я делаю следующее, но 7 запросов на каждой странице — это не очень хорошо:/

Код: Выделить всё

$companies = Company::where('id', '=', Auth::user()->userable_id)->orWhere('company_id', '=', Auth::user()->userable_id)->pluck('id')->toArray();
$contractors = Contractor::where('id', '=', Auth::user()->userable_id)->orWhere('company_id', '=', Auth::user()->userable_id)->pluck('id')->toArray();

$cp = array_merge($companies, $contractors);

$sites = Site::whereIn('company_id', $companies)->pluck('id')->toArray();
$interventions = Intervention::whereIn('site_id', $sites)->pluck('id')->toArray();
$purchases = Purchase::whereIn('intervention_id', $interventions)->pluck('id')->toArray();
$bubblecounts['alerts'] = Alerts::whereIn('purchase_id', $purchases)->where('status', 0)->whereDate('alert_date', '!=', '0000-00-00 00:00:00')->count();
$bubblecounts['actions'] = Action::whereIn('actionable_id', $cp)->where([['status', 0], ['alert_date', '!=', null]])->count();
Можете ли вы мне помочь? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/445 ... tions-deep

Вернуться в «Php»