Mysql
 sql >> Database >  >> RDS >> Mysql

CakePHP 3 - Salvataggio dei dati con associazioni laddove dipendenti dall'associazione

Potrebbe avere più senso avere un campo booleano nella tabella utente che definisce se un utente è un amministratore o meno.

Detto questo, potrebbe essere necessario definire la relazione nei tuoi modelli se non è già presente. Tecnicamente, in base ai nomi delle tue tabelle e alle colonne (user_id) Cake dovrebbe inserirlo per te, ma non ricordo se è convenzionale avere nomi di modelli plurali (Utenti, Amministratori), quindi potrebbe non essere successo.

Utente:

public $belongsTo = [
    'Admins' => [
        'classname' => 'Admins', //are your models really plural? 
        'foreignKey' => 'user_id',
];

Amministratore

public $hasOne= [
    'Users' => [
        'classname' => 'Users',
        'foreignKey' => 'user_id',
];

Quindi, penso che dovresti specificare alcune informazioni sull'amministratore, altrimenti non avrai alcun dato per salvare l'associazione. Nella vista:

echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');

Nota che questi campi possono essere nascosti se non vuoi inserire nulla.

Per salvare, crea un nuovo utente dai dati della richiesta (il tuo modulo crea un utente, ma puoi creare un amministratore con il modulo, quindi aggiungere input come nome utente e cognome utente). Titolare:

$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);
}