时间:2010-11-11 02:40:55

标签: mysql cakephp cakephp-1.3

我正在使用带有MySQL的CakePHP 1.3并使用以下代码进行紧密循环:

if ($this->Model->find('count', array('conditions' => array('Model.name' => 'name'))) == 0)
{
    $this->Model->create();
    $this->Model->save(array('Model' => array('name' => 'name')));
}

$data = $this->Model->find('first', array('conditions' => array('Model.name' => 'name')));

然而,有时$ data出来是NULL;换句话说,即使我创建/保存新记录(如果它不存在),该记录也不存在。

在创建记录和可用记录之间是否有一些延迟?

非常感谢任何帮助。

编辑1 我应该指出,我确保在继续之前对Model-> save()的调用成功。

if (!$this->Model->save(array('Model' => array('name' => 'name'))))
    $this->error('Save failed');

谢谢。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以随时重写代码:

if ($this->Model->find('count', array('conditions' => array('Model.name' => 'name'))) == 0)
  {
  $this->Model->create();
  if ($this->Model->save(array('Model' => array('name' => 'name'))))
    {
    $data = $this->Model->find('first', array('conditions' => array('Model.name' => 'name')));
    /* or better: */
    $data = $this->Model->findByName('name');
    /* or rather use: */
    $data = $this->Model->find('first', array('conditions' => array('Model.id' => $this->Model->id)));
    /* or even better, try this: */
    $data = $this->Model->read();
    }
  }

答案 2 :(得分:0)

也许你有一些阻止保存的验证规则,试试这个

if (!$this->Model->save(array('Model' => array('name' => 'name')))) {
    pr($this->Model->validationErrors);
}

如果pr()显示某些内容,那么您将找到问题