我正在使用 cakephp 2.3.0。我在手册中搜索了很长时间并搜索了互联网,但我没有找到答案。这是我的高级场景:
** 基本上,我只是想向选项数组添加一个变量和一个值,这样当 cakephp 构建 SQL 插入到语句时,它就有这个必需的列和值。**
- 用户使用用户名和密码登录网页
- 在控制器中,我使用模型来查询我的用户表以获取用户的 id #
- 我将 ID # 放入会话变量中
- 接下来,用户登录,然后填写网络表单并提交
- 在我的控制器中,我尝试将存储在会话变量中的 id 的值添加到模型的选项数组中(这是我的麻烦所在)......请参阅下面的详细信息
在我的用户控制器中,我有这个代码片段:
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$condition = array("User.username" => $this->request->data['User']['username']);
$this->Session->write('userId', $this->User->find('first',
array (
'conditions' => array ($condition),
'fields' => array ('User.id'))));
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
在我的活动控制器中,我有这个:
class ActivitiesController extends AppController {
var $components = array('Session');
public function createActivity() {
if ($this->request->is('post')) {
$this->Activity->create();
$user = $this->Session->read('userId');
//debug($user);
debug($user['User']['id']);
$ownerID = ($user['User']['id']);
$this->Activity->set(array('owner_id' => $ownerID));
if ($this->Activity->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'home'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
我的调试将打印一个值 5,这是我希望看到的。但是,我得到的是一个数据库错误,它在网页上输出 SQL INSERT INTO 代码,它告诉我我的 owner_id 不能为 NULL。这是正确的,因为这就是我在数据库表中设置它的方式。
因此,当尝试将会话变量中的 ID 值放入我的选项数组时,我得到了一个 NULL。我仍然认为自己更像是 cakephp 的初学者。任何帮助,将不胜感激。谢谢。