2012-12-23 180 views
2

假設我有三個表中包含關係:Laravel插入嵌套雄辯ORM模型

  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); 

但是,這並不工作。這怎麼能用雄辯的ORM來完成?

回答

1

你不能以這種方式訪問​​子關係,你必須真正擁有模型結果並調用它的方法,或者使用急切的加載,但是加載並不能幫助插入。

您將不得不循環選項模型並插入它們,但這會導致太多插入查詢。更好的做法可能是抓住相關的id並在單個流利的查詢中運行插入而不是許多Eloquent。

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