Я бы хотел найти
Project::with('tasks.tags')->get();
, где только проекты с определенным идентификатором тега возвращаются в наборе результатов.
Например Я хотел бы найти проект с задачами и задачами с тегами только с идентификатором 1. Другими словами, отфильтруйте задачи, возвращаемые внутри отношения Проект - Задача.
Я пробовал разные способы, но до сих пор не получилось.
Я пробовал:
$project = Project::with('tasks.tags')->whereHas('tasks', function($query){
$query->whereHas('tags', function($query) {
$query->where('id', 1);
});
})->get();
И
$project = Project::with('tasks.tags')->whereHas('tasks', function($query){
$query->whereHas('tags', function($query) {
$query->where('tag_id', 1);
});
})->get();
Вот как устанавливаются отношения:
В Project.php
public function tasks()
{
return $this->hasMany(Task::class, 'project_id')->setEagerLoads([]);
}
In Task.php
public function tags()
{
return $this->morphToMany(Tag::class, 'taggable')->setEagerLoads([]);
}
Обратите внимание, что связь между Task и Tags принадлежит morphToMany.
Есть указатели?