【问题标题】:Laravel Inserting nested Eloquent ORM modelLaravel 插入嵌套的 Eloquent ORM 模型
【发布时间】:2012-12-10 07:51:59
【问题描述】:

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

  1. 产品

    has many options
    
  2. 选项

    can belong to many product
    has option_values
    
  3. 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));
    

    【讨论】:

      猜你喜欢
      • 2019-08-01
      • 2016-10-12
      • 2016-03-16
      • 2019-03-15
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      相关资源
      最近更新 更多