3

以下のような関係を持つ3つのテーブルがあるとします。

  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でこれをどのように行うことができますか?

4

1 に答える 1

1

この方法でサブリレーションシップにアクセスすることはできません。実際にモデルの結果を取得してそのメソッドを呼び出すか、熱心な読み込みを使用する必要がありますが、熱心な読み込みは挿入には役立ちません。

オプション モデルをループして挿入する必要がありますが、その結果、挿入クエリが多すぎます。多くのEloquentではなく、関連するIDを取得して単一の流暢なクエリで挿入を実行する方が良いかもしれません。

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