Laravel插入嵌套的Eloquent ORM模型

3
假设我有三个表,关系如下:
  1. product

    has many options
    
  2. option

    can belong to many product
    has option_values
    
  3. option_value

    belongs to many option
    
使用Laravel,我可以像这样更新选项
product->options()->insert($stuff);

然而我还想插入到选项值中。
我尝试过。
product->options()->values()->insert($otherStuff);

但是这并不起作用。如何使用Eloquent ORM实现呢?
1个回答

1

您无法通过这种方式访问子关系,您必须实际拥有模型结果并在其上调用方法,或使用急切加载,但急切加载无法帮助插入操作。

您需要循环选项模型并通过它们进行插入,但这会导致太多的插入查询。更好的方法可能是仅获取相关的ID,并在单个流畅的查询中运行插入操作,而不是许多Eloquent查询。

$option_ids = $product->options()->lists('id');
DB::table(OptionValue::$table)->insert(array_merge($data, $option_ids));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接