所以我有一个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')
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消