【发布时间】:2011-06-08 15:57:30
【问题描述】:
使用 CakePHP 1.3 我正在尝试将一些数据保存到 MySQL 数据库中。数据不是来自表单,但为了模仿它,我将数据放在 $this -> 数据数组中,如下所示:
$this -> data = Array (
'User' => Array (
'last_login' => date ('Y-m-d H:i:s')
)
);
这将创建一个看起来与默认 Cake 数据数组完全相同的数组。到目前为止一切顺利。
接下来,我调用如下函数:
if ($this -> User -> save ($this -> data))
{
echo $this -> User -> id;
}
else
{
echo 'Save failed';
}
它总是出现“保存失败”,表明数据没有正确保存。我尝试通过多种方式对此进行调试:
我检查了我的用户模型或 AppModel 中是否存在 beforeSave 或 beforeValidate 函数,以及它们是否返回 true。 (他们做到了。)
我在 default.ctp 中回显了$this -> Session -> flash ()。它什么也没说。
我在 default.ctp 中回显了$this -> element ('sql_dump')。我没有看到任何我期望的查询的迹象,这证实了我对查询没有执行而不是失败的期望。
我在控制器中回复了$this -> validationErrors。它是空的,所以验证似乎没问题。
我尝试在我的$this -> data array 中提供正确的索引以进行保存,如下所示:
$this -> User -> save ($this -> data['User']);
我检查了我是否通过$this -> loadModel ('User') 加载了我的用户模型(我做了)。
请注意,我尝试在我的 AppController 中执行此操作(这就是我手动加载模型的原因)。更具体地说:它在 AppController 的 beforeFilter () 函数中。这个函数在我的应用程序拥有的每个其他 Controller 中的 beforeFilter () 函数中调用(我检查了这个)。
目前,我不知道是什么原因造成的。有人对此有任何想法吗?
【问题讨论】:
标签: php cakephp save cakephp-1.3