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