Hello again,

I am stuck with the HABTM save/retrieval.. Please help.. I have got three
models.

1. Entitiy (id auto_increment)
2. User (id auto_increment)
3. Favorite(id auto_increment, entity_id)

A user can have many favorite entities and a favorite can belong to many
users.. so i have created a HABTM table users_favorites (user_id,
favorite_id).
I have defined the relationship as follows in the User Model.

var $hasAndBelongsToMany = array(
        'Favorite' =>
            array('className'            => 'Favorite',
                'joinTable'              => 'users_favorites',
                'foreignKey'             => 'user_id',
                'associationForeignKey'  => 'favorite_id',
                'conditions'             => '',
                'order'                  => '',
                'limit'                  => '',
                'unique'                   => false,
                'finderQuery'              => '',
                'deleteQuery'            => '',
                'insertQuery'             => ''
            )

I provide an AJAX link to the user to favorite an entity like
http://<something.com>/users/favorite/entity_id.

In the users_controller, I have written teh following.

$user_id = $this->Auth->user('id');
$this->User->Behaviors->Attach(Behavior);
*save_data['User']['entity_id']=$entity_id;*
$this->User->save($save_data);

In the favorites behavior:

*function beforeSave($&model) {*
*$Favorite = new $Favorite;*
**
*if ($res = $Favorite->find($model->data['User']['entity_id'])) {*
*$id = $res['Favorite']['id'];*
*}*
*else {*
*$Favorite->save(array('id'=>"", 'entity_id' =>
$model->data['User']['entity_id']));*
*$id = $Favorite->getLastInsertID();*
*}*
*$model->data['Favorite']['id'] = $id;*
*}*
*}*

The above said code works quite well.. but my queries here revolove around
the hacks to get the HABTM working:

1. If i change $*save_data['User']['entity_id']=$entity_id; *to
$*save_data['Favorite']['entity_id']=$entity_id;
*and also at other places in the before save in the behavior, then weird
things happen.. now why would i want to set the user's field because
entity_id is actually a part of favorite model.
2. Why do i need to write a behavior to generate the linked model and then
fill the id. Isn't there some thing that does it automagically.. i am sure
that i am missing some thing...

Thanks in Advance.

-- 
Thanks & Regards,
Novice.

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to