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')