Laravel 插入嵌套的 Eloquent ORM 模型
Posted
技术标签:
【中文标题】Laravel 插入嵌套的 Eloquent ORM 模型【英文标题】:Laravel Inserting nested Eloquent ORM model 【发布时间】: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 做到这一点?
【问题讨论】:
【参考方案1】:您不能以这种方式访问子关系,您必须实际拥有模型结果并在其上调用方法,或者使用预加载但预加载对插入没有帮助。
您必须循环选项模型并通过它们插入,但这会导致插入查询过多。最好只获取相关的 id 并在单个流畅的查询中运行插入,而不是在许多 Eloquent 中运行。
$option_ids = $product->options()->lists('id');
DB::table(OptionValue::$table)->insert(array_merge($data, $option_ids));
【讨论】:
以上是关于Laravel 插入嵌套的 Eloquent ORM 模型的主要内容,如果未能解决你的问题,请参考以下文章