ちょっとハマったので参考までに
ひさびさにがっつりプログラミング(PHP+Laravel+Filament)をしている。そのことは後日、書くとして、ちょっとハマったので、まず参考までにその件だけアップします。
リレーションで親レコードと子レコードを同時に保存する設定もDB側は触らずに数行のコードでできるのはいいんだけど、なぜか、子レコードのカラムに親レコードのidカラムの値を保存しているはずが、まったく違う値が保存されるという現象に2日ハマったw
シンプルに検証するために、リレーションを外しても治らす。仕方なく、いったん、新しいテーブルを作って検証。すると正常に動作。一安心して翌日。新しく作ったテーブルやファイルの名前を本来のものに直して、テスト。と、また同じ現象が。
発行されたSQLをログに取ってみた。すると、自分では発行していないSQL文を発見。
ユーザーのログ(ログイン、DBの更新など)を簡単に記録できるプラグイン(spatie/laravel-activitylog)があったので使っていた。そのactivitylogがユーザーのDB更新のログを記録するためのDBのIDに入れ替わっていたということ。
原因がわかれば、あとは早いと思ったが、activitylogのプライマリーキー名を替えても、結果は同じ。ま、仕方なく、いったん、子レコードのDBをactivitylogの対象から外して怪現象は解消。子レコードのDBは、activitylogとは別に履歴を残して、復元できるように作り込んでいたので、activitylogはなくてもとりあえずはOKなんだけど、ちょっとすっきりしない解決。
後日、時間があるときにもう少し調べてみます。