ユーザーが管理者であるかどうかを定義するブールフィールドをユーザーテーブルに含める方が理にかなっているようです。
そうは言っても、モデルに関係がまだない場合は、モデルで関係を定義する必要があるかもしれません。技術的には、テーブル名と列(user_id)に基づいて、Cakeがこれを焼き付けますが、複数のモデル名(Users、Admins)を使用するのが一般的かどうかは覚えていないため、これは発生しなかった可能性があります。
ユーザー:
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.nameやuser.surnameなどの入力を追加することもできます)。コントローラー:
$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);
}