【问题标题】:Laravel Inserting nested Eloquent ORM modelLaravel 插入嵌套的 Eloquent ORM 模型
【发布时间】:2012-12-10 07:51:59
【问题描述】:
假设我有三个具有如下关系的表:
-
产品
has many options
-
选项
can belong to many product
has option_values
-
option_value
belongs to many option
使用 Laravel 我可以像这样更新选项
product->options()->insert($stuff);
但是我也想插入到 option_value 中。
我试过了
product->options()->values()->insert($otherStuff);
但这不起作用。如何使用 Eloquent ORM 做到这一点?
【问题讨论】:
标签:
php
sql
laravel
eloquent
【解决方案1】:
您不能以这种方式访问子关系,您必须实际拥有模型结果并在其上调用方法,或者使用预加载但预加载对插入没有帮助。
您必须循环选项模型并通过它们插入,但这会导致插入查询过多。最好只获取相关的 id 并在单个流畅的查询中运行插入,而不是在许多 Eloquent 中运行。
$option_ids = $product->options()->lists('id');
DB::table(OptionValue::$table)->insert(array_merge($data, $option_ids));