まず、私は長い間 CakePHP を使用しており、API に非常に慣れています。これは顔と手のひらのエラーになると確信していますが、1時間以上立ち往生しているため、これについて新鮮な目が必要です.
User
、Job
、およびの 3 つのモデルがありCompany
ます。
Company
多くを持っていますUser
Company
多くを持っていますJob
場合によっては、ユーザーがジョブ レコードを更新しているときに、ジョブのcompany_id
フィールドを変更する必要があります。これが発生した場合、ユーザー自身のcompany_id
フィールドを変更する必要もあります。したがって、事実上、User
とJob
は両方とも別の会社に再割り当てされます。
の CRUD update メソッドに、次のJobsController
ロジックを追加しました。
$this->Job->User->read(NULL, $this->Session->read('User.id'));
$this->Job->User->set('company_id', $this->data['Job']['company_id']);
$this->Job->User->save();
適切な値を含み、フォーム ヘルパーから送信された正しい値が含まvar_dump()
れているような、典型的なデバッグ手法を使用して確認しました。$this->Session->read('User.id')
$this->data['Job']['company_id']
テーブルのタイムスタンプがそうであることを示しているため、正しいUser
レコードが更新されますが、データ配列からの正しいレコードではなく、フィールドが設定されます。modified
company_id
NULL
company_id
興味深いことに、上記のスニペットの後、Job
レコードを保存すると、 (同じ配列を使用して)正しいもので更新されます。company_id
$this->data
テーブル$this->Job->User->save()
に値を渡すように見えるだけです。NULL
<facepalm type="ラメ">
アプリケーション フローのさらに進んだ時点で、新しいジュニア開発者がコードをモンキー化したことが判明しました。この開発者は同じチケットを完了しようとしていて、データがロードされた save メソッドを誤って実行しましたNULL
(ジョブ データの保存後、ジョブの保存前に作業していたので気付かなかったのです...)。
いずれにせよ、SQL ダンプをたどっていくとエラーが見つかりました。そのため、正しいデバッグ パスを示してくれた @dhofstet の功績を認めてください。バージョン管理に感謝します。
</facepalm>