I am posting this in the hope that some of you may be able to help.
I have a User model which has a HABTM association to Role and vice
versa.
I would like to add role to a user in the following way:
Tables:
users: fields..., HABTM Role
roles: id,name -- HABTM User
roles_users : user_id,role_id (linking table)
Code:
$role = array();
$role['Role'] = array('id' => $role_id);
$role['User']['User'] = array($list_user_id);
$this->User->Role->create();
$this->User->Role->save($role); // the role should really be updated
only and the association added to the user
Failed: Cake has thrown the following error: Warning (512): SQL Error:
1054: Unknown column 'RolesUser.id' in 'field list' [CORE\cake\libs
\model\datasources\dbo_source.php, line 521]
Cannot figure out what the problem really is, do not even know why
cake is looking at that field.
Because that fails I was forced to write a function to add roles to
user, which in my opinion is ugly.
Function:
//Send in the user id and role name
//function declared in user.php model
function addRole($user_id,$role){
$this->expects(array('Role')); //Models are binding when needed only
//$params = array('conditions' => array( 'Role.name' => $role));
$this->Role->recursive = -1;
$role = $this->Role->findByName($role);
$role_id = $role['Role']['id'];
if(!$data = $this->Role->query("SELECT * FROM roles_users AS Role
WHERE role_id = $role_id AND user_id = $user_id")){
//$role['User'] = array('User' => array($user_id));
//$this->Role->save($role); //Not working, errors for some reason
//pr('Please save the role now');
$this->Role->query("INSERT INTO roles_users (user_id,role_id) VALUES
($user_id,$role_id)");
}
}
That works, but I would like to avoid that if possible.
Do any of you know a smarter way to do the job.
Many thanks in advance...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment