前提・実現したいこと
テーブルAのauto_incrementのidカラムに登録した際に別テーブルにある同じカラム名のidにも同時に登録されるようにしたい
ここに質問の内容を詳しく書いてください。
PHP(Laravel)の学習でDB操作を練習しています。
テーブルAにauto_incrementのuser_idというカラムがあり、そこにデータを入れた際にテーブルBにあるuser_idという同名のカラムにも同じ番号が保存されるようにしたいです。
テーブルAにデータをinsertする時にinsertGetIdを使うことでidを取得できると分かりましたが、それをどう使えばテーブルBに反映することができるのか調べても出てこず悩んでおります。
該当のソースコード
PHP
1//TableAモデルに下記を記述。これでidを取得(ググって調べた表記方法) 2$id = \DB::table('table_A')->insertGetId($data,'user_id'); 3 4//TableBモデルは普通にinsertのみ 5\DB::table('table_B')->insert($data); 6 7//controllerへの書き方不明。 8 public function create(Request $request){ 9 $data['user_id'] = $request->user_id; 10 $data_id = \App\Models\tableA::insert($data); 11} 12 13コメントを参考させていただき上記から下記へ変更 14Model Aに下記を追加 15protected $primaryKey = 'user_id'; 16---------------------------------- 17Controllerを下記に変更 18$a = new \App\Models\A(); 19$a->save(); 20 21$b = new \App\Models\B(); 22$b->user_id = $a->user_id; //$aのuser_idはauto_increment 23$b->save(); 24修正後下記のエラーが発生
エラーの内容
PHP
1SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails~
色々不足部分あると思いますが、広く使われる表記方法などご存知の方がおりましたらご教授願います。
補足情報(FW/ツールのバージョンなど)
OS:Mac(catalina10.15.1)
PHP:ver7.3
Laravel:ver5.8
Mysql:ver5.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/28 14:02
退会済みユーザー
2019/11/29 05:44