cakephp 3 multi level associated save -


i have users model has hasone relationship employees model. when save user add record in employees table user_id. works fine.

the employee can associated belongstomany courses through coursesemployees table. saves ok when save employees.

my problem want save 3 three courses not saved.

save user -> save employee new user_id -> save courses chosen new employee employee_id in courses_employees

employeestable.php

public function initialize(array $config) {     $this->table('employees');     $this->displayfield('name');     $this->primarykey('id');     $this->addbehavior('timestamp');     $this->belongsto('users', [         'foreignkey' => 'user_id',      ]);     $this->belongsto('hotels', [         'foreignkey' => 'hotel_id',         'jointype' => 'inner'     ]);     $this->belongstomany('courses', [         'foreignkey' => 'employee_id',         'targetforeignkey' => 'course_id',         'jointable' => 'courses_employees'     ]); } 

users add.ctp:

<?= $this->form->create($user) ?> <fieldset>     <legend><?= __('add user') ?></legend>     <?php         echo $this->form->input('role_id', ['options' => $roles, 'empty' => true]);         echo $this->form->input('email');         echo $this->form->input('active');         echo $this->form->input('activation_key');         echo $this->form->input('password');         echo $this->form->input('employee.name');         echo $this->form->input('employee.email');         echo $this->form->input('employee.surname');         echo $this->form->input('employee.employee_num');         echo $this->form->input('employee.courses._ids', ['options' => $courses]);     ?> </fieldset> <?= $this->form->button(__('submit')) ?> <?= $this->form->end() ?> 

here post data sent add method save. user , employee saved correctly no recored in courses_employees.

if save employee form employee controller courses_employees add ok know associations setup ok.

[ 'role_id' => '1', 'email' => 'asdasd@asdasd.com', 'active' => '11111111111', 'activation_key' => '1', 'password' => 'asdasdadasdasdasda', 'employee' => [     'name' => 'asdasdasdasd',     'email' => 'asdasdasd2dasd.com',     'surname' => 'asdasdads',     'employee_num' => 'asdasdadasdas',     'courses' => [         '_ids' => [             (int) 0 => '2'         ]     ] ] ] 

usercontroller.php

public function add() {     $this->loadmodel('courses');     $user = $this->users->newentity();     if ($this->request->is('post')) {         $user = $this->users->patchentity($user, $this->request->data, [             'associated' => ['employees', 'courses']         ]);         if ($this->users->save($user)) {             $this->flash->success(__('the user has been saved.'));             return $this->redirect(['action' => 'index']);         } else {             $this->flash->error(__('the user not saved. please, try again.'));         }     }     $roles = $this->users->roles->find('list', ['limit' => 200]);     $courses = $this->courses->find('list', ['limit' => 200]);     $this->set(compact('user', 'roles', 'courses'));     $this->set('_serialize', ['user']); } 

i have found solution. have read cookbook again , noted in 1 of examples snippets 'associated' => ['tags', 'comments.users']

i have applied controller , works. saving on levels.

$user = $this->users->patchentity($user, $this->request->data, [     'associated' => ['employees', 'employees.courses'] ]); 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -