sql >> Database >  >> RDS >> Mysql

CakePHP 3 - Gegevens opslaan met associaties waar afhankelijk van associatie

Het klinkt alsof het logischer is om een ​​booleaans veld in de gebruikerstabel te hebben dat bepaalt of een gebruiker een beheerder is of niet.

Dat gezegd hebbende, moet u mogelijk de relatie in uw modellen definiëren als deze er nog niet is. Technisch gezien, op basis van je tabelnamen en kolommen (user_id) zou Cake dit voor je moeten bakken, maar ik weet niet meer of het gebruikelijk is om meerdere modelnamen te hebben (Gebruikers, Beheerders), dus dit is misschien niet gebeurd.

Gebruiker:

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

Beheerder

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

Dan denk ik dat je wat informatie over de beheerder moet opgeven, anders heb je geen gegevens om de koppeling op te slaan. In de weergave:

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

Merk op dat deze velden verborgen kunnen worden als je niets wilt invoeren.

Om op te slaan, maakt u een nieuwe gebruiker van de aanvraaggegevens (uw formulier maakt een gebruiker aan, maar u kunt een beheerder maken met het formulier en vervolgens invoer toevoegen zoals gebruiker.naam en gebruiker.achternaam). 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. JDBC-verbinding mislukt, fout:TCP/IP-verbinding met host mislukt

  2. MySQL:Kolom 'kolomnaam' waarin clausule dubbelzinnig is

  3. Produceer DISTINCT-waarden in STRING_AGG

  4. Voeg een tekstbestand in Oracle in met Bulk Insert