In meiner App kann ein Benutzer mit einem anderen Benutzer befreundet sein. Sie haben also eine viel zu viele Beziehung zwischen zwei Tabellen. Auf diese Art und Weise: Users > Friends < Users
Mehrere Beziehungen zu einer Tabelle in CakePHP
Die Tabellen wie folgt aussehen:
Users:
id
username
password
Friends:
id
user_id_from
user_id_to
und ich habe die Modelle auf wie so gesetzt:
class User extends AppModel
{
public $name = 'User';
public $hasOne = 'Profile';
public $hasMany = array(
'Post',
'Answer',
'Friend'
);
public $actsAs = array('Containable');
}
class Friend extends AppModel
{
var $name = 'Friend';
var $belongsTo = array(
'Sender' => array(
'className' => 'User',
'foreignKey' => 'user_id_from'
),
'Recipient' => array(
'className' => 'User',
'foreignKey' => 'user_id_to'
)
);
public $actsAs = array('Containable');
}
aber es scheint nicht, um sie richtig zu verknüpfen?
Ich benutze diesen Code innerhalb des User-Modell:
public function getFriends($username)
{
return $this->find('all', array('conditions' => array('User.username' => $username, 'Friend.status'=>1)
));
}
und dann, wenn eine URL wie /users/USERNAME/friends
besuchen sie die Freunde für diese Person Liste sollte. Die Methode, die es aufruft ist:
public function index($username)
{
$friends = $this->User->getFriends($username);
$this->set('friends', $this->paginate());
}
Was ist das Problem?
keine Updates bitte. Da bin ich wirklich verwirrt und möchte das behoben haben. – Cameron