以下のようなテーブルがあったとします。
users - id - name - point items - id - name - point user_item - user_id - item_id - note ※ user_itemレコード作成時にメモ的なものを保存したいとします。
php
1class User extends Model 2{ 3 public function items() 4 { 5 return $this->belongsToMany('App\Models\Item', 'user_item')->using('App\Models\UserItem')->withPivot('note'); 6 } 7} 8 9
※ ItemとUserItemは中身空でモデルがあるとします。
以下のようにUserItemの中間テーブルを作成しようとした場合、以下のようなエラーがでます。
追記:
x 中間テーブルを作成
○ 中間テーブルのレコードを作成
失礼いたしましたm(_ _)m
php
1>>> $user = App\Models\User::find(1); 2>>> $item = App\Models\Item::find(1); 3>>> $user->items()->save($item); 4Illuminate/Database/QueryException with message 'SQLSTATE[HY000]: General error: 1364 Field 'note' doesn't have a default value (SQL: insert into `user_item` (`item_id`, `user_id`) values (1, 1))'
UserItemモデルにuser_id,item_id,noteを渡して作成する形でしたら作成可能でしたが、
上記のようなやり方で中間テーブルに持っているカラムも渡すことができるようでしたらご教示いただけますと助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/21 07:29