Звучи, че може да има по-голям смисъл да има булево поле в таблицата с потребители, което определя дали даден потребител е администратор или не.
Като се има предвид това, може да се наложи да дефинирате връзката във вашите модели, ако тя вече не е там. Технически, въз основа на имената на вашите таблици и колони (user_id), Cake трябва да изпече това вместо вас, но не си спомням дали е конвенционално да има имена на модели в множествено число (Потребители, Администратори), така че това може да не се е случило.
Потребител:
public $belongsTo = [
'Admins' => [
'classname' => 'Admins', //are your models really plural?
'foreignKey' => 'user_id',
];
Администратор
public $hasOne= [
'Users' => [
'classname' => 'Users',
'foreignKey' => 'user_id',
];
След това мисля, че ще трябва да посочите някаква информация за администратора или няма да имате никакви данни, за да запазите асоциацията. В изгледа:
echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');
Имайте предвид, че тези полета могат да бъдат скрити, ако не искате да се въвежда нищо.
За да запазите, създайте нов потребител от данните за заявката (вашият формуляр създава потребител, но можете да създадете администратор с формуляра и след това да добавите входове като потребителско.име и потребителско.фамилия). Контролер:
$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);
}