diff --git a/src/Model/Table/MessagesTable.php b/src/Model/Table/MessagesTable.php index d5402a17..4361c35e 100644 --- a/src/Model/Table/MessagesTable.php +++ b/src/Model/Table/MessagesTable.php @@ -91,6 +91,10 @@ public function validationDefault(Validator $validator): Validator * Returns a rules checker object that will be used for validating * application integrity. * + * Note: existsIn validation rules are defined here but may be skipped during save + * when called with pre-loaded User entities (e.g., in AwardService). Database + * foreign key constraints provide backup enforcement in such cases. + * * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. * @return \Cake\ORM\RulesChecker */ diff --git a/src/Service/AwardService.php b/src/Service/AwardService.php index c4d3df56..71aeddb8 100644 --- a/src/Service/AwardService.php +++ b/src/Service/AwardService.php @@ -61,7 +61,9 @@ private function gibToUser( 'type' => true, ], ]); - $messagesTable->saveOrFail($message); + // Skip ORM validation since User entities are already loaded and guaranteed to exist. + // Database foreign key constraints will enforce referential integrity. + $messagesTable->saveOrFail($message, ['validate' => false]); $span = SentrySdk::getCurrentHub()->getSpan(); if ($span !== null) {