3

假设我有三个具有如下关系的表:

  1. 产品

    has many options
    
  2. 选项

    can belong to many product
    has option_values
    
  3. 选项值

    belongs to many option
    

使用 Laravel 我可以像这样更新选项

product->options()->insert($stuff);

但是我也想插入option_value

我试过了

product->options()->values()->insert($otherStuff);

但这不起作用。如何用 Eloquent ORM 做到这一点?

4

1 回答 1

1

您不能以这种方式访问​​子关系,您必须实际拥有模型结果并在其上调用方法,或者使用预加载但预加载对插入没有帮助。

您必须循环选项模型并插入它们,但这会导致插入查询过多。更好的方法可能是只获取相关的 id 并在单个流畅的查询中运行插入,而不是在许多 Eloquent 中运行。

$option_ids = $product->options()->lists('id');
DB::table(OptionValue::$table)->insert(array_merge($data, $option_ids));
于 2012-12-26T09:50:37.193 回答