Я потратил два дня, пытаясь решить эту проблему, но я не могу понять, как это сделать.
у меня пять столов
- Товар
- Категория
- Категория_Продукт
- Заказ
- Заказ_Продукт
С точки зрения, нажав кнопку категории, я должен получить все заказанные товары с соответствующей категорией.
У меня актуальные модели:
Модель продукта
class Product extends Model
{
public function categories() {
return $this->belongsToMany('App\Category');
}
public function orders() {
return $this->belongsTo('App\Order');
}
}
Модель категорий
public function products() {
return $this->belongsToMany('App\Product');
}
Модель заказа
public function products() {
return $this->belongsToMany('App\Product');
}
Теперь проблема в том, что я не могу понять, как получить данные из текущих таблиц. Когда я нажимаю кнопку, я могу получить категорию из таблицы Product
, но я хочу получить из Ordered_Products
. Я действительно не могу понять, как.
Благодаря этому я могу получить все категории из продукта.
if (request()->category) {
$products = Product::with('categories')->whereHas('categories', function ($query) {
$query->where('slug', request()->category);
})->get();
}
Вместо этого я могу получить заказанные продукты.
$products = DB::table('order_product')
->join('products', 'order_product.product_id','=', 'products.id')
->where('order_product.user_id','=',$user_id)
->get();
Для последнего есть лучший способ сделать это, это точно. Извините, если это глупый вопрос, но я новичок в этой структуре. Я использую Laravel 7.2.