У меня есть 3 таблицы: UsersTable , RolesTable , UsersRolesTable
Я хочу назначить пользователю данную роль при регистрации, но он не сохраняет данные в таблицу соединений ( UsersRolesTable ), и я не знаю почему.
Присутствуют следующие ассоциации:
UsersTable
$this->belongsTo('Roles', [
'foreignKey' => 'user_id',
'targetForeignKey' => 'role_id',
'joinTable' => 'users_roles'
]);
RolesTable
$this->belongsToMany('Users', [
'foreignKey' => 'role_id',
'targetForeignKey' => 'user_id',
'joinTable' => 'users_roles'
]);
UsersRolesTable
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
$this->belongsTo('Roles', [
'foreignKey' => 'role_id',
'joinType' => 'INNER'
]);
В моем пользовательском контроллере у меня есть следующая функция
public function register()
{
$roles = TableRegistry::get('Roles');
$role_data = $roles->findByName('User')->first();
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
$data = $this->request->getData();
$user->profile = $this->Users->setDefaultProfile();
$user->role = $role_data;
$user = $this->Users->patchEntity($user, $data);
if ($this->Users->save($user)) {
$this->Flash->success(__('Ihr Account wurde erfolgreich angelegt. Sie können sich nun einloggen.'));
return $this->redirect(['action' => 'login']);
}
$this->Flash->error(__('Ihr Account konnte nicht angelegt werden. Bitte versuchen Sie es später erneut.'));
}
$this->set(compact('user'));
}
Я читаю в книге с cakephp, но могуэто не работает, и не оборачивайся вокруг этого очень хорошо.
Может кто-нибудь увидеть или объяснить ошибку, которую я здесь делаю?
Если вам нужна дополнительная информация, пожалуйста, сообщите мне.