У меня две модели. User
и Task
, которые имеют отношение ко многим.
В UserController:
public function show(User $user)
{
return view('users.show', compact('user'));
}
Пользователи / show.blade.php:
Posts: @include('users.show.tasks', ['tasks'=>$user->tasks()]);
Пользователи / шоу / tasks.blade.php:
Active Tasks Count: {{$tasks->active()->count()}}
Запрос:
select count(*) as aggregate from `tasks` inner join `user_task` on `tasks`.`id` = `user_task`.`task_id` where `user_task`.`user_id` = '1' and `status` = '4';
Pending Posts Count: {{$posts->pending()->count()}}
Запрос:
select count(*) as aggregate from `tasks` inner join `user_task` on `tasks`.`id` = `user_task`.`task_id` where `user_task`.`user_id` = '1' and `status` = '4' and `status` = '3';
Это метод задач в пользовательской модели
public function tasks()
{
return $this->belongsToMany(Task::class)->latest();
}
Области применения в модели задач
public function scopeActive($query)
{
return $query->where('status', 4);
}
public function scopePending($query)
{
return $query->where('status', 3);
}
Когда я проверяю запрос, используя laravel-debugbar
, для второго запроса результат включает два идентификатора состояния вместо одного