Save()没有在我的id字段中传递任何内容

时间:2014-08-26 16:03:26

标签: php cakephp

我的调试值设置为2,我认为因为没有数据传递到这里我得到验证错误,这就是为什么这首次出现是一个幻像错误。我不确定,因为我还是Cakephp的新手。

我有一个Addresses控制器,它将数据传递给我的模型,如下所示:

public function add() {

    if ($this->request->is('post')) {
        $this->Address->create();
        if ($this->Address->save($this->request->data)) {
            $this->Session->setFlash(__('The address has been saved.'));
            return $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The address could not be saved. Please, try again.'));
        }
    }   
    $users = $this->Address->User->find('list');
    $this->set(compact('users'));
}

但是当我使用die(debug($this->request->data))))调试时,我得到以下结果,显示我的id字段中没有传递任何内容:

/app/Controller/AddressesController.php (line 61)
array(
    'Address' => array(
        'id' => '',
        'building_number' => '1',
        'street_name' => 'Test Street',
        'city' => 'Cityville',
        'post_code' => 'N113AQ',
        'user_id' => '1'
    )
)

关于为什么没有任何内容传递到id字段的任何想法?我让控制器以完全正确的完全的方式工作,对于完全没问题的不同表格。

我的数据库中的Address.id字段设置为自动增量并且命名正确,$this->Address->save()也返回false。

1 个答案:

答案 0 :(得分:-1)

如果$ this-> request->数据包含以表单模型命名的数组元素,并且该数组包含模型主键的空值(此处为id),则FormHelper将创建一个添加表单为那个记录。对于add方法,HTTP POST动词是可以的。 POST用于创建,PUT用于CakePHP中的编辑。您可以检查验证并将请求类型更改为非GET。它可能有用。

if (!$this->request->is('get')){
  //Save logic here
}