0

簡単なリクエスト/受け入れ機能を作成しようとしています。ユーザーが人物を追加します - 両方のユーザーのユーザー名が、自動生成された ID とともにテーブルに追加されます。他のユーザーがリクエストを確認すると、承認をクリックしてレコードに有効期限を追加します。現在何が起こっているかというと、ユーザーが同意をクリックして有効期限を設定すると、関係テーブルに新しいレコードが作成されます。

私の関係テーブルの構造は

id
partyone
partytwo
active
expirydate

パブリック関数 add(){

        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

これは意味がありません。これはタイプミスですか:

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

それは明らかに読むべきです:

        $this->Relationship->id = $this->Relationship->getLastInsertID();
于 2012-05-25T13:59:31.940 に答える
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を格納するフィールドが必要です。idrelationship

IDメソッドのパラメーターとしてapprove、または隠しフィールドとして保存できます。

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 に答える