Хочу сделать фильтр,отношение многие ко многим
К категориям привязаны товары,к определенным товарам привязаны их авторы(Их может быть несколько)
в json хочу вывести коллекцию товаров с выбранными авторами
например:
делается фильтр на 1 категорию,в фильтре выбирается id автора товара, например 1 или 1 и 2 и т.д
и нужно вывести категорию саму+ только товары,в которых есть авторы из фильтра
у меня почему то вытаскивается все товары
public function filter($category)
{
$sortDirection = 'desc';
$tags = ['1','2'];
return CategoryResource::collection(Category::with(['products.authors' => function ($query) use ($sortDirection,$tags) {
$query->whereIn('user_id', $tags)->orderBy('id', $sortDirection);
}])
->where('id',$category)
->get());
}
Модель Category
public function products() {
return $this->hasMany(Product::class);
}
Модель Products
public function authors() {
return $this->belongsToMany(User::class,'product_user','product_id');
}
Что выводится у меня
"id": 2,
"name": "Категория 1 ",
"count": 2,
"products": [
{
"id": 2,
"name": "Товар 1",
"description": "Описание",
"authors": [
{
"id": 1,
"firstname": "Ivanov 1",
"lastname": "Ivanov 1",
},
{
"id": 2,
"firstname": "lan",
"lastname": "lanov",
}
]
},
{
"id": 2,
"name": "Товар 2",
"description": "Описание",
"authors": []
}
]
у "Товар 2" нету привязанных авторов
И когда указываю
$tags = ['1'];
выводится все тоже самое,но в товаре 1 автора нету
"id": 2,
"name": "Товар 1",
"description": "Описание",
"authors": [
{
"id": 1,
"firstname": "Ivanov 1",
"lastname": "Ivanov 1",
},