В моем приложении пользователь может дружить с другим пользователем. Таким образом, у них есть много разных отношений между двумя таблицами. В этой моде: Users > Friends < Users
Несколько отношений к одной таблице в CakePHP
таблицы выглядят как:
Users:
id
username
password
Friends:
id
user_id_from
user_id_to
и я поставил модели вверх, как так:
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');
}
Однако это не похоже, чтобы связать их должным образом?
Я использую этот код внутри пользователя Модель:
public function getFriends($username)
{
return $this->find('all', array('conditions' => array('User.username' => $username, 'Friend.status'=>1)
));
}
, а затем при посещении URL как /users/USERNAME/friends
он должен перечислить друг для этого человека. Метод, который называет это:
public function index($username)
{
$friends = $this->User->getFriends($username);
$this->set('friends', $this->paginate());
}
В чем проблема?
Любые обновления, пожалуйста. Поскольку я действительно запутался и хочу, чтобы это исправлено. – Cameron