为了账号安全,请及时绑定邮箱和手机立即绑定

获取刚刚创建的模型实例及其所有子关系

获取刚刚创建的模型实例及其所有子关系

PHP
蛊毒传说 2023-07-15 17:38:09
所以我有一个Order、Product、ProductOption和OrderProductOption模型。产品.php:    public function product_options()    {        return $this->hasMany(ProductOption::class);    }一个产品可以有多种选择,例如。Product“衬衫 1”可以有ProductOption“XS”、“S”、“M”等。产品选项.php:    public function product()    {        return $this->belongsTo(Product::class);    }    public function orders()    {        return $this->belongsToMany(Order::class, 'order_product_option', 'option_id', 'order_id')->withPivot('quantity');    }订单.php:    public function product_options()    {        return $this->belongsToMany(ProductOption::class, 'order_product_option', 'order_id', 'option_id')->withPivot('quantity');    }现在,每当Order创建 an 时,我都会得到Order它的ProductOption关系。但是,我还想检索Product与 相关的ProductOption。我想我可以说我想要得到一个子关系。我怎样才能获得刚刚创建的Order所有关系,包括子关系?通常情况下,我可以这样做:return new OrderResource(Order::where('id', $order_id)    ->with('product_options', 'product_options.product')    ->firstOrFail());但在这种情况下,我想返回一个Order实例,而不是 OrderRequest array.我试过:    $order->with('product_options.product')或者:    $order->with('product_options.product')->get()但这些返回一个Builder实例或一个Collection实例。任何帮助,将不胜感激!
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您的问题是您尝试在已加载的模型上使用 with() 。您拥有所需的模型,只需加载关系即可。这称为延迟预加载。

    $order->load('product_options.product')


查看完整回答
反对 回复 2023-07-15
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信