Любой способ сделать простой подсчет отношений с различными предложениями «где»? - PullRequest
1 голос
/ 06 мая 2019

У меня есть это отношение в модели пользователя

public function bulletins()
{
    return $this->hasMany('App\Bulletins','owner');
}

в контроллере я получаю количество бюллетеней:

dump(
 User::where('id',Auth::id())
  ->withCount('bulletins')
  ->where('status','=',1)
  ->first()
);

Это все со статусом = 1, но мне также нужно статус = 0 и другие параметры, которые в разных столбцах таблицы. Я хочу что-то вроде этого:

bulletin_counters->total =10//all
bulletin_counters->active =20//status=1
bulletin_counters->archive =30//status=0
bulletin_counters->deleted =40//deleted=1
etc...

Какой лучший способ сделать это? Я знаю, что могу выполнить много запросов и назначить эти переменные вручную.

1 Ответ

2 голосов
/ 06 мая 2019

Вы должны иметь возможность настроить запрос, который генерируется withCount

Попробуйте выполнить следующее:

 ->withCount([
    'bullentins as bullentins_total',
    'bullentins as bullentins_active' => function($query) { $query->where('status', 1); },
    'bullentins as bullentins_archive' => function($query) { $query->where('status', 0); },
    'bullentins as bullentins_deleted' => function($query) { $query->where('deleted', 1); }
    ]);
...