You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:13:23