首页 文章

Laravel有多个中间表

提问于
浏览
1

我正在尝试开发多店电子商务平台 . 所以创建了以下表格:

shops: id, name, ...
products: id, shop_id, ...
orders: id, ...
order_details: id, order_id, product_id, ...

这是我模特关系的总结:

  • Shop->products :店里有很多产品

  • Product->shop :产品属于商店

  • Order->details :订单hasMany OrderDetail

  • OrderDetail->order :OrderDetail属于Order

  • OrderDetail->product :OrderDetail属于产品

  • Product->orders :产品有多个订单详细信息

现在, 1: 是否有可能定义 Shop->orders 关系?(由于多个中间表,在这种情况下接缝有多次通过不起作用)

2: 如果可能, shop->orders->details 是否只包含与商店产品相关的记录?

应该注意的是,每个订单可能包含来自多个商店的产品,但 shop->orders->details 关系应仅包含商店产品 .

1 回答

  • 0

    这种情况没有本机关系 .

    我创建了 HasManyThrough 关系,支持 BelongsToManyRepository on GitHub

    安装完成后,您可以像这样使用它:

    class Shop extends Model {
        use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
    
        public function orders() {
            return $this->hasManyDeep(Order::class, [Product::class, 'order_details']);
        }
    }
    

相关问题