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

CakePHP 3 - Gemmer data med foreninger, hvor afhængige af foreninger

Det lyder som om, at det måske giver mere mening at have et boolesk felt i brugertabellen, der definerer, om en bruger er admin eller ej.

Når det er sagt, skal du muligvis definere forholdet i dine modeller, hvis det ikke allerede er der. Teknisk set, baseret på dine tabelnavne og og kolonner (user_id) skal Cake bage dette ind for dig, men jeg kan ikke huske, om det er konventionelt at have modelnavne i flertal (Brugere, Admins), så det er muligvis ikke sket.

Bruger:

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

Admin

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

Så tror jeg, at du skal angive nogle oplysninger om administratoren, ellers vil du ikke have nogen data til at gemme tilknytningen. I visningen:

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

Bemærk, at disse felter kan skjules, hvis du ikke ønsker at indtaste noget.

For at gemme skal du oprette en ny bruger fra anmodningsdataene (din formular opretter en bruger, men du kan oprette en administrator med formularen og derefter tilføje input som bruger.navn og bruger.efternavn). 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);
}


  1. SQL-forespørgsler, der binder variabler i forhold til at specificere dem

  2. Login mislykkedes for brugeren 'DOMAIN\MACHINENAME$'

  3. (PHP):Advarsel:include_once, kunne ikke åbne stream:Tilladelse nægtet

  4. Sådan installeres MySQL 5.7 på Amazon ec2