sql >> Databasteknik >  >> RDS >> Mysql

CakePHP 3 - Spara data med föreningar där det är beroende av association

Det låter som att det kan vara mer meningsfullt att ha ett booleskt fält i användartabellen som definierar om en användare är admin eller inte.

Med detta sagt kan du behöva definiera relationen i dina modeller om den inte redan finns där. Tekniskt sett, baserat på dina tabellnamn och och kolumner (user_id) bör Cake baka in detta åt dig, men jag kommer inte ihåg om det är vanligt att ha plural modellnamn (Användare, Admins), så detta kanske inte har hänt.

Användare:

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

Admin

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

Sedan tror jag att du måste ange lite information om administratören, annars kommer du inte att ha några data för att spara föreningen. I vyn:

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

Observera att dessa fält kan döljas om du inte vill att något ska matas in.

För att spara, skapa en ny användare från förfrågningsdata (ditt formulär skapar en användare, men du kan skapa en administratör med formuläret och sedan lägga till indata som användar.namn och användar.efternamn). Styrenhet:

$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. postgres in vagrant(ubuntu14.04)

  2. Med MySql, kan jag sortera en kolumn men har 0 kommit sist?

  3. Hur komprimerar jag den här Oracle-resultatuppsättningen till värden enligt radprioritet, och ignorerar nollor?

  4. 3 sätt att skapa ett CREATE TABLE-skript från en befintlig tabell i SQLite