У меня четыре модели: User, Product, Order, OrderItem
Когда User добавляет товар в свою корзину, создается новый Order, а товар становится новым OrderItem.
Столы:
users
id - integer
name - string
products
id - integer
name - string
orders
id - integer
user_id - integer
paid - boolean
order_items
order_id - integer
product_id - integer
quantity -integer
price - double
Отношения:
`Product` hasMany `OrderItem`
`OrderItem` belongsTo `Order`
`OrderItem` belongsTo `Product`
`Order` hasMany `OrderItem`
`User` hasMany `Order`
Я хочу иметь возможность перечислить все Product и под каждым всех User, купивших этот Product (Order whereNotNull 'paid'). И наоборот, я хотел бы показать User все Product, которые они купили.
Я пробовал делать это поэтапно с отношениями. Я могу заставить {{ $product->orderItems }} работать, но не {{ $product->orderItems->orders }}
Laravel не разрешает отношения hasManyThrough со сводной таблицей, что, по сути, и есть order_items, так что это не сработает.
Возможно, я мог бы сделать это с помощью Accessor с соединением, но я не могу понять это, потому что я не могу установить отношения.
Может быть, пользовательская коллекция Eloquent, чтобы каждый раз, когда я вызываю Product, в ней уже были все оплаченные User, и каждый раз, когда я вызываю User, в коллекции уже будут все его Product?