如何实现hasManyThrough反向关联?从订单直接获取关联工厂
实现订单到工厂的反向关联(无需通过产品模型)
在Laravel中,要实现$order->factory直接获取关联工厂的需求,可以利用hasOneThrough关系构建反向关联——因为一个订单对应唯一产品,该产品又归属唯一工厂,完全适配hasOneThrough的关联逻辑。
代码实现(Order模型)
// Order Model public function factory() { return $this->hasOneThrough( Factory::class, Product::class, 'factory_id', // Product表中关联Factory的外键 'id', // Factory表的主键 'product_id', // Order表中关联Product的外键 'id' // Product表的主键 ); }
简化写法(遵循Laravel默认字段命名规范时)
如果你的数据表字段完全遵循Laravel默认命名规则(如Factory主键为id,Product关联Factory的外键为factory_id,Order关联Product的外键为product_id),可以省略参数,Laravel会自动推断关联字段:
// Order Model public function factory() { return $this->hasOneThrough(Factory::class, Product::class); }
完成上述定义后,即可直接通过$order->factory获取该订单对应的工厂模型。
内容的提问来源于stack exchange,提问作者d3ridi
相关产品推荐
相关产品推荐

