Het klinkt alsof het logischer is om een booleaans veld in de gebruikerstabel te hebben dat bepaalt of een gebruiker een beheerder is of niet.
Dat gezegd hebbende, moet u mogelijk de relatie in uw modellen definiëren als deze er nog niet is. Technisch gezien, op basis van je tabelnamen en kolommen (user_id) zou Cake dit voor je moeten bakken, maar ik weet niet meer of het gebruikelijk is om meerdere modelnamen te hebben (Gebruikers, Beheerders), dus dit is misschien niet gebeurd.
Gebruiker:
public $belongsTo = [
'Admins' => [
'classname' => 'Admins', //are your models really plural?
'foreignKey' => 'user_id',
];
Beheerder
public $hasOne= [
'Users' => [
'classname' => 'Users',
'foreignKey' => 'user_id',
];
Dan denk ik dat je wat informatie over de beheerder moet opgeven, anders heb je geen gegevens om de koppeling op te slaan. In de weergave:
echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');
Merk op dat deze velden verborgen kunnen worden als je niets wilt invoeren.
Om op te slaan, maakt u een nieuwe gebruiker van de aanvraaggegevens (uw formulier maakt een gebruiker aan, maar u kunt een beheerder maken met het formulier en vervolgens invoer toevoegen zoals gebruiker.naam en gebruiker.achternaam). Controller:
$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);
}