编辑表单在cakePHP中添加新插入

时间:2014-04-19 12:22:42

标签: cakephp insert-update

我有' c_id'而不是' id'在邮政表中

这是我的控制器

public function editContact( $id = null ) {

    if( !$id ) {
        throw new NotFoundException( __( 'Invalid Post' ) );
    }

    $contact = $this->Contact->findBycId( $id );
    if( !$contact ) {
        throw new NotFoundException( __( 'Invalid Post' ) );
    }


    if( $this->request->is( array( 'post', 'put' ) ) ) {
        $this->Contact->id = $id;
        //echo $this->Contact->cid;
        if( $this->Contact->save( $this->request->data ) ) {
            $this->Session->setFlash( __( 'Data Updated' ) );
            return $this->redirect( array( 'action' => 'index' ) );
        }
        $this->Session->setFlash( __( 'Unable To update Data!' ) );
    }

    if( !$this->request->data ) {
        $this->request->data = $contact;
    }
}

我收到此错误

  

数据库错误   错误:SQLSTATE [42S22]:找不到列:1054未知列' Contact.id'在' where子句'

     

SQL查询:SELECT COUNT(*)AS count FROM learnin_cakePHPcontacts AS Contact WHERE Contactid =&# 39; 19'

但是当我改变这一行时

$this->Contact->id = $id;

$this->Contact->cid = $c_id; 

它作为新记录插入。

在我的编辑表格中有:

<input type="hidden" value="POST" name="_method">

我发现VALUE必须是PUT而不是POST

2 个答案:

答案 0 :(得分:1)

确保您的模型

public $primaryKey = 'c_id';

在控制器中,使用

if ($this->request->is(array('post', 'put'))) {
    $this->Contact->id = $id;
    if( $this->Contact->save($this->request->data)) {
       // ...
    }
}

答案 1 :(得分:0)

primaryKey添加到Contact.php:

public $primaryKey = 'c_id';