0

我正在尝试创建一个简单的请求/接受函数。一个用户添加一个人 - 两个用户的用户名连同一个自动生成的 ID 添加到表中。现在,当其他用户检查他们的请求时,他们单击批准并将到期日期添加到记录中。当前发生的情况是,当用户单击接受并设置到期日期时,它会在关系表中创建一条新记录。

我的关系表的结构是

id
partyone
partytwo
active
expirydate

公共函数添加(){

        if($this->request->is('post')){
        $this->Relationship->create();
        if ($this->Relationship->save($this->request->data))
        {
            $id=$this->Relationship->id;
            $this->Session->setFlash('The relationship has been saved'); 

        }
        else { $this->Session->setFlash('The relationship could not be saved. Please, try again.'); }
        }

      }



        public function approve(){
            if($this->request->is('post')){
            $this->Relationship->id;
            $this->Relationship->getLastInsertID();
            $this->Relationship->save($this->request->data);
            $this->Session->setFlash('The information has been saved');}
            else{
            $this->Session->setFlash('The information couldnt be saved');}


        }


    }

这是我的批准视图

<?php
echo $this->Form->create('Relationship', array('action'=>'approve'));
echo $this->Form->input('expirydate',array('label'=>'Expiry Date: ', 'class' => 'dateclass')); 
echo $this->Form->end('Submit');

?>

这是我的添加视图

<?php
echo $this->Form->create('Relationship', array('action'=>'add'));
echo $this->Form->input('partyone',array('label'=>'Enter your username: '));
echo $this->Form->input('partytwo',array('label'=>'Username of user: '));
echo "<br />";
echo $this->Form->end('Click here to add relationship');

?>  

我该如何编写代码以便它更新而不是创建一个带有到期日期的新行,请帮助我对此失去理智。

4

3 回答 3

0

您必须在“批准”视图中添加一个隐藏字段,其中包含您要编辑的关系的 ID。如果提交的数据包含一个 id,该save()方法将更新指定的记录而不是创建一个新记录。

您可以在食谱中找到一个示例:http: //book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html#editing-posts

于 2012-05-25T15:29:38.837 回答
0

您需要提供更多信息,但基本思想是:

在您approve看来,您需要有一个字段来存储要批准id的。relationship

您可以将 存储IDapprove方法的参数或隐藏字段。

function approve($id=null) {
    /*Form action = Relationship/Approve/ID*/
    $this->Relationship->id = $id;
    /*or - hidden field/an input*/
    $this->Relationship->id = $this->request->data['Relationship']['id'];
    $this->Relationship->save($this->request->data);
}

id在你保存之前设置好,Cake 会更新,而不是添加。

于 2012-05-25T15:31:40.960 回答
0

这没有任何意义。这是一个错字吗:

        $this->Relationship->id;
        $this->Relationship->getLastInsertID();

它显然应该是:

        $this->Relationship->id = $this->Relationship->getLastInsertID();
于 2012-05-25T13:59:31.940 回答