Thanks Bernardo - that makes sense. I think I might drop the concept
of admirers and have an "accepted" state for friendships.

This all works well when displaying user data, a user model
automatically has data about previous friendships but I still can't
add new friends. The best I can get when I play with the code is a
drop of all entries in the "users_users" and in insert of the new
friendship.

Any ideas or tutorials that might help me out?

Dave.

On Sep 29, 6:23 pm, Bernardo Vieira <[EMAIL PROTECTED]> wrote:
> I imagine it should work if you use different join tables for each HABTM
> relationship. Regardless of cakephp this is what I imagine you'd need in
> this situation (imagine what would happen if a user is both a friend and
> an admirer of another user).
>
>         var $hasAndBelongsToMany = array(
>                         'Friend' => array('className' => 'User',
>                                                 'joinTable' => 
> 'friends_users',
>                                                 'foreignKey' => 'friend_id',
>                                                 'associationForeignKey' => 
> 'user_id'
>                         ),
>
>                         'Admirer' => array('className' => 'User',
>                                                 'joinTable' => 
> 'admirers_users',
>                                                 'foreignKey' => 'admirer_id',
>                                                 'associationForeignKey' => 
> 'user_id'
>                         )
>         );
>
> wallerdm wrote:
> > Dear All,
>
> > Forgive me if this is covered elsewhere. I'm playing with cakePHP as
> > an alternative to Rails and am getting to grips with it by creating a
> > really simple social network app.
>
> > I've got some nice authentication and user profiles sorted and that's
> > all displaying great but now I've come to add the "add as a friend"
> > functionality and I'm struggling.
>
> > Every user in the "users" table has an "id" and I also have a table
> > set up, "users_users", to hold the self referential join. This table
> > has a an "id", a "user_id" and a "friend_id".
>
> > My user model contains the following...
>
> > <?php
> > class User extends AppModel {
>
> >    var $name = 'User';
> >    var $hasOne = 'Profile';
> >    var $hasMany = array('Status' => array('order' => 'Status.created
> > DESC' ));
>
> >    var $hasAndBelongsToMany = array(
> >                    'Friend' => array('className' => 'User',
> >                                            'joinTable' => 'users_users',
> >                                            'foreignKey' => 'user_id',
> >                                            'associationForeignKey' => 
> > 'friend_id'
> >                    ),
> >                    'Admirer' => array('className' => 'User',
> >                                            'joinTable' => 'users_users',
> >                                            'foreignKey' => 'friend_id',
> >                                            'associationForeignKey' => 
> > 'user_id'
> >                    )
> >    );
>
> > }
> > ?>
>
> > And my users_controller contains...
>
> > <?php
> > class UsersController extends AppController {
>
> > .....
> >    function addfriend($friend_id = null) {
> >            $user_id = $this->Session->read('User');
> >            $this->data['User']['id'] = $user_id['id'];
> >            $this->data['Friend']['id'] = $friend_id;
> >            print_r($this->data);
> >            if($this->User->saveAll($this->data)){
> >                    echo 'saved';
> >            }else{
> >                    echo 'failed';
> >            }
> >    }
> > .....
>
> > }
> > ?>
>
> > Now I know that I've got the data element wrong for the database save
> > because it isn't working and the SQL that's generated when you add a
> > friend is incorrect.
>
> > If you're logged in as a user with id 1 and want to become friends
> > with the user with id 4 (http://localhost/network/users/addfriend/4),
> > you get...
>
> > data = Array ( [User] => Array ( [id] => 1) [Friend] => Array ( [id]
> > => 4 ) )
>
> > ...and the SQL from the CakePHP debug panel is...
>
> > UPDATE `users` SET `id` = 1 WHERE `users`.`id` = 1
>
> > Is anyone able to help me get this whole self-referential-HABTM
> > relationship thing sorted?
>
> > Thanks in advance.
>
> > Dave.
--~--~---------~--~----~------------~-------~--~----~
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