【发布时间】:2020-01-04 09:48:49
【问题描述】:
我有四个模型: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 以及在每个Users 下购买Product (Order whereNotNull 'paid') 的所有Users。
相反,我想显示他们购买的所有Products 的User。
我已经尝试在人际关系方面采取措施。我可以让{{ $product->orderItems }} 工作,但不能让{{ $product->orderItems->orders }} 工作
Laravel 不允许 hasManyThrough 与数据透视表建立关系,这基本上就是 order_items 的本质,所以这行不通。
也许我可以使用带有连接的访问器来执行此操作,但我无法完全理解它,因为我无法真正设置关系。
也许是一个自定义的 Eloquent 收藏,所以每次我调用 Product 时它已经拥有所有已付费的 User 并且每次我调用 User 时收藏都已经拥有他所有的 Product?
【问题讨论】:
-
如果你有深厚的关系,我的建议是试试这个库:github.com/staudenmeir/eloquent-has-many-deep
标签: php laravel laravel-5 eloquent