0

こんにちは、私のデータベースを更新しようとすると、この関数はテーブルから ID を取得しておらず、テーブル内のその行を更新していません。また、エラーをスローします

$this->Relationship->id = $this->request->data['id'];

ここに関数全体があります

public function approve($id=null){
        $this->Relationship->id = $id;
        if($this->request->is('get')){
        $this->request->data=$this->Relationship->read();}
        $this->Relationship->id = $this->request->data['id'];
        if($this->Relationship->save($this->request->data)) {
        $this->Session->setFlash('Your Relationship has been updated.');
        $this->redirect(array('action' => 'request'));
        } else {
            $this->Session->setFlash('Unable to update your post.');
        }
    }
    }

ここにフォーム/ビューがあります

<?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');

?>

この関数で私がやろうとしているのは、ID を取得し、そのエントリの 2 つのフィールドを編集することです

4

2 に答える 2

0

$this->request->data['Relationship']['id'];フォームを正しく設定すれば、そうなるはずです。また、あなたはただすることができます

$this->Relationship->create($this->request->data);
$this->Relationship->save()
于 2012-05-26T05:52:13.483 に答える
0
    public function approve($id=null){
        $this->set('title_for_layout', 'Relationships');
        $this->set('stylesheet_used', 'homestyle');
        $this->set('image_used', 'eBOXLogoHome.jpg');   
        $this->layout='home_layout';

        if ($this->request->is('get')) {
        $this->request->data = $this->Relationship->read(NULL, $id);

        } else {
        //sets active to 1
         $this->Relationship->read(null, $id);
         $this->Relationship->set(array('active' => true,));
        if ($this->Relationship->save($this->request->data)) {

            $this->Session->setFlash('Your post has been updated.');
            $this->redirect(array('action' => 'request'));
        } else {
            $this->Session->setFlash('Unable to update your post.');
        }
    }
}

また、データベースで tinyint を 0=>1 に変更する必要がありました。もう 1 つの問題は、リクエスト ビューにあり、id を承認関数に渡していませんでした。コードをこれに変更すると、うまくいきました

<?php foreach($Relationships as $relationship):?>
                    <tr> 

                        <td align='center'><?php echo $relationship['Relationship']['partyone']; ?></td>
                        <td align='center'><?php echo $relationship['Relationship']['partytwo']; ?></td>
                        <td> </td>
                        <td><?php echo $this->Html->link($relationship['Relationship']['partyone'], array('action'=>'approve', $relationship['Relationship']['id'])); ;?>
                        </td>

                    </tr>
                <?php endforeach; ?>

            </table>
于 2012-05-26T13:48:40.350 に答える