1

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

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

有没有办法按照我建议的方式去做?如果是,我做错了什么?

非常感谢!

4

1 回答 1

1

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

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

于 2012-04-12T21:32:29.867 回答