#eloquent #laravel-7
#eloquent #laravel-7
Вопрос:
Я использую отношения «многие ко многим» с таблицами products и product_categories, используя сводную таблицу product_product_category.
Модель продукта
class Product extends Model
{
public function product_categories() {
return $this->belongsToMany(ProductCategory::class, 'product_product_category');
}
}
Модель категории продукта
class ProductCategory extends Model {
public function products() {
return $this->belongsToMany(Product::class, 'product_product_category');
}
}
Что мне нужно сделать, так это когда я предоставляю массив категорий, необходимо получать продукты только с этими категориями.Это мой код
$selectedCategotries = array(1, 2);
$products = Product::with(['product_categories' => function($q) use ($selectedCategotries){
$q->whereIn('product_categories.id', $selectedCategotries);
}])->get();
Но вместо этого я получаю все продукты. Это будет большим подспорьем, если вы сможете предоставить мне решение.
Ответ №1:
Наконец, я нашел ответ с whereHas. Добавление ответа для всех, кто сталкивается с такой же проблемой.
$products = Product::whereHas('product_categories', function ($q) use ($selectedCategotries) {
$q->whereIn('product_categories.id', $selectedCategotries);
})->get();