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

Php 获取刚刚创建的模型实例及其所有子关系,php,laravel,eloquent,Php,Laravel,Eloquent,所以我有一个订单,产品,产品选项和订单产品选项模型 Product.php: public function product_options() { return $this->hasMany(ProductOption::class); } 一个产品可以有多个选项,例如,产品“衬衫1”可以有产品选项“XS”、“S”、“M”等 ProductOption.php: public function product() {

所以我有一个
订单
产品
产品选项
订单产品选项
模型

Product.php:

    public function product_options()
    {
        return $this->hasMany(ProductOption::class);
    }
一个产品可以有多个选项,例如,
产品
“衬衫1”可以有
产品选项
“XS”、“S”、“M”等

ProductOption.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');
    }
Order.php:

    public function product_options()
    {
        return $this->belongsToMany(ProductOption::class, 'order_product_option', 'order_id', 'option_id')->withPivot('quantity');
    }
现在,无论何时创建
订单
,我都会得到带有
ProductOption
关系的
Order
。但是,我还想检索与
ProductOption
相关的
Product
。我想我可以说我想得到一个子关系

如何获取刚创建的
订单
及其所有关系,包括子关系

通常,我可以做:

return new OrderResource(Order::where('id', $order_id)
    ->with('product_options', 'product_options.product')
    ->firstOrFail());
但是在本例中,我想返回一个
订单
实例,而不是
订单请求数组

我试过:

    $order->with('product_options.product')
或:

但它们返回一个
Builder
实例或一个
Collection
实例。
任何帮助都将不胜感激

您的问题是,您试图在已加载的模型上使用with()。你有了你想要的模型,你只需要建立关系。这被称为惰性的渴望加载

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