如何在模型中使用:$this->Auth->user('id')?蛋糕php 3.0

Men*_*auu 5 authentication cakephp model cakephp-3.0

我一直在研究瘦控制器胖模型的方式。之前,我在我的控制器中使用了它:

$this
    ->find('all')
    ->contain(['Declarator'])
    ->where(['user_id' => $this->Auth->user('id')])
    ->order(['Declarations.created' => 'DESC']);
Run Code Online (Sandbox Code Playgroud)

但是,$this->Auth->user('id'), 在模型中不起作用。

还有什么其他方法可以从模型中的经过身份验证的用户那里获取 id?

bur*_*zum 6

还有什么其他方法可以从模型中的经过身份验证的用户那里获取 id?

只需将其传递给模型方法:

public function someModelMethod($userId, array $postData) {
    // Do something here, move your code from the controller here
    return $something;
}

public function someControllerAction() {
    $this->set('data', $this->Model->someModelMethod(
        $this->Auth->user('id'),
        $this->request->data
    );
}
Run Code Online (Sandbox Code Playgroud)

Cake 没有一个层来处理业务逻辑,所以大部分时间它都放在模型层中。Cake 也不使用依赖注入,因此像 auth 对象一样传递整个实例有时很麻烦。另外我认为 auth 对象本身不应该与模型层相交。我们要避免紧耦合。为了简化这一点(也用于测试),将所需的值传递给方法要容易得多。