我是使用cakephp编程的新手,所以我实现了一个简单的用户游戏应用程序。有一个" hasMany"用户与游戏之间的关系。游戏完全由一个用户创建。因此,游戏模型中有一个字段,名为" user_id"。我已经在使用auth组件,用户可以登录系统。现在,我希望该用户可以向模型添加游戏,但应自动添加user_id(通过访问会话数据)。我怎么能做到这一点?
斯坦尼斯:)答案 0 :(得分:1)
现在,我希望用户可以向模型添加游戏,但应自动添加user_id(通过访问会话数据)。我怎么能做到这一点?
首先,我强烈建议你做官方的博客教程,因为它会为你提供这样的问题。
在控制器中:
public function add() {
if ($this->request->is('post') {
$this->request->data['Game']['user_id'] = $this->Auth->user('id');
$this->Game->save($this->request->data);
}
}
但是,通过将逻辑移入模型,可以并且绝对应该做得更好,请记住:胖模型,瘦的控制器。这是一个细分的简短例子:
// Controller
public function add() {
if ($this->request->is('post') {
$this->Game->add($this->Auth->user('id'), $this->request->data);
}
}
// Model
public function add($userId, $postData) {
$postData[$this->alias]['user_id'] = $userId;
return $this->save($this->request->data);
}
}
通常您不希望直接在模型中访问会话,因为它要求您使用对auth组件或会话对象的静态或单例调用,我们希望尽可能避免这种情况。