Hi great coders,
I am having a problem trying to get my model associations in a
plugin to come through.
I have a plugin called users and I have a users_controller and a
user_profiles_controller and thier associated models. Between these
two models, I have them associated as, user has one user profile and
the user profile belongs to a user.
In my controller, since I want to save the profile information at
the same time as I create the user, I have to declare the $uses
array. This is fine but, since I am in a plugin, I have to declare
these like so:
public $uses = array('users.User', 'users.UserProfile'); This works
perfectly and I can create a user and a user profile and it saves just
fine.
The problem is when I try to find the user. In my model association I
have to have:
$belongsTo = 'users.User'; and $hasOne = 'users.UserProfile'; or else
it will say that it cannot find the correct table.
Now, with this set, I get a giant SQL statement with an error:
Query: SELECT `User`.`id`, `User`.`email`, `User`.`password`,
`User`.`group_id`, `User`.`created`, `User`.`updated`,
`User`.`modified`, `users`.`UserProfile`.`id`,
`users`.`UserProfile`.`first_name`, `users`.`UserProfile`.`last_name`,
`users`.`UserProfile`.`address`, `users`.`UserProfile`.`city`,
`users`.`UserProfile`.`state`, `users`.`UserProfile`.`zip`,
`users`.`UserProfile`.`province`, `users`.`UserProfile`.`country`,
`users`.`UserProfile`.`home_telephone`,
`users`.`UserProfile`.`cell_phone`, `users`.`UserProfile`.`fax`,
`users`.`UserProfile`.`user_id` FROM `users` AS `User` LEFT JOIN
`user_profiles` AS `users`.`UserProfile` ON
(`users`.`UserProfile`.user_id = `User`.`id`) WHERE 1 = 1
1064: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near '.`UserProfile` ON (`users`.`UserProfile`.user_id = `User`.`id`)
WHERE 1 = 1' at line 1
To me, it looks like the error is in the statement where it says
users.UserProfile ON users.UserProfile.user_id
So, I am at a loss, can't find anything here on the group, or the
tickets and IRC isn't very helpful today.
So, here is the code I have, maybe a second set of eyes will see
something I dont.
Remember, this is in a plugin.
USERS_CONTROLLER - /app/plugins/users/controllers/users_controller.php
-----------------------------------
class UsersController extends UsersAppController {
public $components = array('Auth');
public $uses = array('users.User', 'users.UserProfile');
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->loginAction = '/login';
$this->Auth->logoutAction = '/logout';
$this->Auth->allowedActions = array('index', 'create', 'read',
'update', 'delete');
}
public function index() {
}
public function create() {
if(!empty($this->data)) {
$this->data['User']['password'] =
$this->Auth->password($this-
>data['User']['password']);
$this->User->create($this->data);
$this->User->save($this->data);
$user_id = $this->User->id;
$this->data['UserProfile']['id'] = $user_id;
$this->data['UserProfile']['user_id'] = $user_id;
$this->UserProfile->create($this->data);
$this->UserProfile->save($this->data);
}
$this->set('fields', $this->User->getColumnTypes());
}
public function read($id = 1) {
$this->set('user', $this->User->findById($id));
}
public function update($id = 1) {
$this->set('user', $this->User->findById($id));
}
public function delete() {
}
}
USER_MODEL - /app/plugins/users/models/user.php
-----------------------
class User extends UsersAppModel {
public $useDbConfig = 'users';
public $hasOne = 'users.UserProfile';
}
USER_PROFILE_MODEL - /app/plugins/users/models/user_profile.php
--------------------------------------
class UserProfile extends UsersAppModel {
public $useDbConfig = 'users';
public $belongsTo = 'users.User';
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---