我尝试将相关模型的数据接收到当前登录的用户。 这是我目前的用户模型:
class User extends AppModel {
public $name = 'User';
public $hasMany = array(
'Website' => array(
'className' => 'Website',
'foreignKey' => 'user_id'
)
);
}
这是与用户模型相关联的网站模型:
class Website extends AppModel {
public $name = 'Website';
public $belongsTo = array(
'User' => array(
'classname' => 'User',
'foreignKey' => 'user_id'
)
);
}
当我尝试获取登录用户的网站时,我不想在数据库请求的条件下以静态方式设置网站的user_id。所以我尝试使用关联:
public function beforeFilter() {
parent::beforeFilter();
$this->Website->User->id = $this->Auth->user('id');
// OR
$this->Website->User->set($this->Auth->user());
}
public function index() {
$this->set('websites', $this->Website->find('all'));
}
但它会返回所有网站,而不仅仅是具有正确user_id的网站。
有没有办法像我建议的那样去做?如果是的话,我做错了什么?
非常感谢!
答案 0 :(得分:1)
如果您使用Model-> find('all')将检索该模型的所有记录。
使用您的belongsTo关系,当您检索用户(使用find->)时,Cake将检索同一集合中的网站。根据您处理身份验证的方式,该数据可能是自用户会话开始以来的