Wygląda na to, że bardziej sensowne byłoby umieszczenie pola logicznego w tabeli użytkowników, które określa, czy użytkownik jest administratorem, czy nie.
Biorąc to pod uwagę, może być konieczne zdefiniowanie relacji w swoich modelach, jeśli jeszcze jej nie ma. Technicznie rzecz biorąc, na podstawie nazw tabel i kolumn (user_id) Cake powinien upiec to za Ciebie, ale nie pamiętam, czy jest to typowe dla nazw modeli w liczbie mnogiej (Użytkownicy, Administratorzy), więc mogło się to nie wydarzyć.
Użytkownik:
public $belongsTo = [
'Admins' => [
'classname' => 'Admins', //are your models really plural?
'foreignKey' => 'user_id',
];
Administrator
public $hasOne= [
'Users' => [
'classname' => 'Users',
'foreignKey' => 'user_id',
];
Następnie myślę, że musisz podać pewne informacje o administratorze, w przeciwnym razie nie będziesz mieć żadnych danych, aby zapisać powiązanie. W widoku:
echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');
Pamiętaj, że te pola mogą być ukryte, jeśli nie chcesz nic wprowadzać.
Aby zapisać, utwórz nowego użytkownika z danych żądania (formularz tworzy użytkownika, ale możesz utworzyć administratora z formularzem, a następnie dodać dane wejściowe, takie jak nazwa.użytkownika i nazwisko.użytkownika). Kontroler:
$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);
}