This is my User model :

<?php
> class User extends AppModel {
>     public $name = 'User';
>     
>     public $hasMany = 'Post';
>     
>     public $hasAndBelongsToMany = array(
>       'Following' => array(
>           'className' => 'User',
>           'joinTable' => 'users_users',
>           'foreignKey' => 'follower_id',
>           'associationForeignKey' => 'following_id',
>           'unique' => true,
>           'conditions' => '',
>           'fields' => '',
>           'order' => 'Following.username ASC',
>           'limit' => '',
>           'offset' => '',
>           'finderQuery' => '',
>           'deleteQuery' => '',
>           'insertQuery' => ''
>         ),
>       'Follower' => array(
>           'className' => 'User',
>           'joinTable' => 'users_users',
>           'foreignKey' => 'following_id',
>           'associationForeignKey' => 'follower_id',
>           'unique' => true,
>           'conditions' => '',
>           'fields' => '',
>           'order' => 'Follower.username ASC',
>           'limit' => '',
>           'offset' => '',
>           'finderQuery' => '',
>           'deleteQuery' => '',
>           'insertQuery' => ''
>         )
>      );
>     
> }



My follow function in UsersController :

public function follow() {
>     $this->User->bindModel(array('hasOne'=>array('UsersUsers')),false);
>     if ($this->User->UsersUsers->save($this->request->data)) {
>       $this->Session->setFlash('You are now following this user.');
>       $this->redirect(array('controller' => 'users', 'action' => 'index'));
>     }
>     else {
>       $this->Session->setFlash('Unable to follow this user.');
>       $this->redirect(array('controller' => 'users', 'action' => 'index'));
>     }
>     }


And the Follow form :

<!-- Follow -->
> <?php
> echo $this->Form->create('User', array(
> 'class' => 'form-inline',
> 'action' => 'follow',
> 'inputDefaults' => array(
>     'label' => false,
> ) ));
>
> echo $this->Form->input('UsersUsers.follower_id',array(
> 'type' => 'hidden',
> 'value' => $this->Auth->user('id'),
> ));
> echo $this->Form->input('UsersUsers.following_id',array(
> 'type' => 'hidden',
> 'value' => $user['User']['id'],
> ));
>
> echo ("<input type='submit' class='btn btn-success' value='Follow'>"); ?>
> <!-- End follow -->



Thanks a lot for your help

Le jeudi 14 juin 2012 14:40:16 UTC+2, JonStark a écrit :
>
> I have a table with the following fields : 
>
> id follower_id following_id
>
> So when a user clicks "follow" on an other user's profile, an entry like 
> this is created :
>
> 15 1 3
>
> meaning user with id 1 follows user with id 3.
>
> If user 3 follows 1, then an entry like 
>
> 16 3 1 
>
> is created.
>
> But, in order to prevent users for following many time a same user, 
> leading to entry such as :
>
> 17 3 1
> 18 3 1
> 19 3 1
>
> and so on, I want to replace "follow" by "unfollow" if the entry is 
> already saved.
>
> So my question is : how can i "scan" the table to check if an entry as 
> both X as follower_id AND Y as following_id ?
>
> Thanks a lot.
>

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to