Я потратил два дня, пытаясь решить эту проблему, но не могу понять, как.
У меня есть пять таблиц
- Продукт
- Категория
- Category_Product
- Order
- Order_Product
В представлении, нажав на кнопку категории, я должен выбрать все его заказанные продукты с соответствующей категорией.
У меня есть текущие модели:
Модель продукта
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.