This should be the relevant code. If you need something else in order to check where the problem could be, please let me know:
WorkoutsController:
public function edit($id = null)
{
$workout = $this->Workouts->get($id, [
'contain' => ['Members', 'Teams'],
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$workout = $this->Workouts->patchEntity($workout, $this->request->getData());
if ($this->Workouts->save($workout)) {
$this->Flash->success(__('The workout has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The workout could not be saved. Please, try again.'));
}
$captains = $this->Workouts->Captains->find('list', ['limit' => 200]);
$routes = $this->Workouts->Routes->find('list', ['limit' => 200]);
$seasons = $this->Workouts->Seasons->find('list', ['limit' => 200]);
$members = $this->Workouts->Members->find('list', ['limit' => 200]);
$teams = $this->Workouts->Teams->find('list', ['limit' => 200]);
$this->set(compact('workout', 'captains', 'routes', 'seasons', 'members', 'teams'));
}
WorkoutsTable:
class WorkoutsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config): void
{
parent::initialize($config);
$this->setTable('workouts');
$this->setDisplayField('id');
$this->setPrimaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('Captains', [
'className' => 'Members',
'foreignKey' => 'captain_id',
]);
$this->belongsTo('Routes', [
'foreignKey' => 'route_id',
'joinType' => 'INNER',
]);
$this->belongsTo('Seasons', [
'foreignKey' => 'season_id',
'joinType' => 'INNER',
]);
$this->belongsToMany('Members', [
'foreignKey' => 'workout_id',
'targetForeignKey' => 'member_id',
'joinTable' => 'members_workouts',
]);
$this->belongsToMany('Teams', [
'foreignKey' => 'workout_id',
'targetForeignKey' => 'team_id',
'joinTable' => 'teams_workouts',
]);
}
/**
* Default validation rules.
*
* @param \Cake\Validation\Validator $validator Validator instance.
* @return \Cake\Validation\Validator
*/
public function validationDefault(Validator $validator): Validator
{
$validator
->integer('id')
->allowEmptyString('id', null, 'create');
$validator
->date('date')
->requirePresence('date', 'create')
->notEmptyDate('date');
$validator
->time('time')
->requirePresence('time', 'create')
->notEmptyTime('time');
return $validator;
}
/**
* Returns a rules checker object that will be used for validating
* application integrity.
*
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
* @return \Cake\ORM\RulesChecker
*/
public function buildRules(RulesChecker $rules): RulesChecker
{
$rules->add($rules->existsIn(['captain_id'], 'Captains'));
$rules->add($rules->existsIn(['route_id'], 'Routes'));
$rules->add($rules->existsIn(['season_id'], 'Seasons'));
return $rules;
}
}
The WorkoutsEntity does not contain anything specific.