3つのモデルが有り、
Product、productType, ProductSize
それぞれテーブルがあります
products, product_types, product_sizes
そして、リレーションとして
ProductにProductTypeのhasManyを設定 public function productTypes() { return $this->hasMany('App\ProductType'); }
同様に
productTypeにProductSizeのhasManyを設定しています。
product->producttype->productsizeの関係です
これをDB登録の際に3つのテーブルにそれぞれ登録したいのですが、
$product = Product::create([ 'price' => $request['price'], ]); $product->productTypes()->create([ 'type' => $request['type'], ]);
ここまでは登録でき、product_typesテーブルへもproduct_idが自動で入るのですが
3つめのテーブル
$product->productTypes()->productSizes()->create([ 'size' => $request['size'], ]);
としても、
BadMethodCallException Object
Call to undefined method Illuminate\Database\Eloquent\Relations\HasMany::productSizes()
のようなエラーがでてしまいます。
3つ目のテーブルのみ、
ProductSize::create([
//
]);
で出来ますが、
$product->productTypes()->productSizes()->create([
のような形で登録できたほうがidなども自動で入れてくれるので・・・
こういった3つのテーブルのリレーションしている状態で同時に書き込む方法などはあるのでしょうか?
よろしくおねがいします
あなたの回答
tips
プレビュー