Mysql
 sql >> база данни >  >> RDS >> Mysql

CakePHP 3 - Запазване на данни с асоциации, където зависи от асоциацията

Звучи, че може да има по-голям смисъл да има булево поле в таблицата с потребители, което определя дали даден потребител е администратор или не.

Като се има предвид това, може да се наложи да дефинирате връзката във вашите модели, ако тя вече не е там. Технически, въз основа на имената на вашите таблици и колони (user_id), Cake трябва да изпече това вместо вас, но не си спомням дали е конвенционално да има имена на модели в множествено число (Потребители, Администратори), така че това може да не се е случило.

Потребител:

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 = $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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя нов език за съобщенията за грешки на mysql?

  2. ГРЕШКА! MySQL мениджърът или PID файлът на сървъра не можа да бъде намерен! QNAP

  3. PHP:MySQL заявка дублира актуализация без причина

  4. Как да включите NULL стойности в заявка с Outer Join и Group By

  5. php mysql + проблеми със сесията