Il semblerait plus logique d'avoir un champ booléen dans la table des utilisateurs qui définit si un utilisateur est un administrateur ou non.
Cela étant dit, vous devrez peut-être définir la relation dans vos modèles si elle n'y est pas déjà. Techniquement, en fonction de vos noms de table et de vos colonnes (user_id), Cake devrait intégrer cela pour vous, mais je ne me souviens pas s'il est conventionnel d'avoir plusieurs noms de modèle (utilisateurs, administrateurs), donc cela n'est peut-être pas arrivé.
Utilisateur :
public $belongsTo = [
'Admins' => [
'classname' => 'Admins', //are your models really plural?
'foreignKey' => 'user_id',
];
Administrateur
public $hasOne= [
'Users' => [
'classname' => 'Users',
'foreignKey' => 'user_id',
];
Ensuite, je pense que vous devrez spécifier des informations sur l'administrateur, sinon vous n'aurez aucune donnée pour enregistrer l'association. Dans la vue :
echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');
Notez que ces champs peuvent être masqués si vous ne voulez rien saisir.
Pour enregistrer, créez un nouvel utilisateur à partir des données de la demande (votre formulaire crée un utilisateur, mais vous pouvez créer un administrateur avec le formulaire, puis ajouter des entrées telles que user.name et user.surname). Contrôleur :
$user = $this->Admins->Users->newEntity();
if($this->request->is('post')) {
$this->Admins->Users->patchEntity($user, $this->request->data, [
'associated' => ['Admins']
]);
$this->Admins->Users->save($user);
}