CakePHP:获取登录用户的关联对象

时间:2012-04-12 21:16:40

标签: php cakephp cakephp-appmodel

我尝试将相关模型的数据接收到当前登录的用户。 这是我目前的用户模型:

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的网站。

有没有办法像我建议的那样去做?如果是的话,我做错了什么?

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您使用Model-> find('all')将检索该模型的所有记录。

使用您的belongsTo关系,当您检索用户(使用find->)时,Cake将检索同一集合中的网站。根据您处理身份验证的方式,该数据可能是自用户会话开始以来的