6

データベースからレコードを削除する方法を教えてもらえますか?残りの部分は終了しました。削除のみが残ります。削除コマンドを実行していますが、データベースからデータが削除されていません。実際、データベースからユーザーを削除するためのコードを含むアクションをコントローラー(delete_user)に作成しました。電子メールの値はセッションに保存されており、アクセスしています。次のコントローラーのセッション読み取り機能を使用して値を取得します。

function delete_user() { $email=$this->Session->read('User.email'); $this->User->delete($email, $cascade = true); echo $this->Session->delete('User.email'); echo $this->Session->delete('User.username'); $this->redirect(array('action' => 'login')); } );

ホーム(表示)ページにリンクを作成しています。こんな感じです。

a href='/cakephp/cakephp/Users/delete_user'>Delete Profile</a>

私はそれを正しいか間違っていますか?

4

4 に答える 4

6

このような質問をする前に、まずオンラインドキュメントを確認してください。

2012年10月18日更新

CakePhpの魔法の検索タイプを使ってみてください:

$user = $this->User->findByEmail("bob@gmail.com");
$this->User->delete($user['User']['id']);
于 2012-10-17T15:42:39.010 に答える
3

コントローラで、次のコードを削除アクションに置き換えます。

public function delete($id = null) {
    if (!$this->request->is('post')) {
        throw new MethodNotAllowedException();
    }
    $this->User->id = $id;
    if (!$this->User->exists()) {
        throw new NotFoundException(__('Invalid user'));
    }
    if ($this->User->delete()) {
        $this->Session->setFlash(__('User deleted'));
        $this->redirect(array('action' => 'index'));
    }
    $this->Session->setFlash(__('User was not deleted'));
    $this->redirect(array('action' => 'index'));
}

ctpファイルに次のリンクを追加します。

 <?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', ID OF THE RECORD, null, __('Are you sure you want to delete # %s?', ID OF THE RECORD)); ?>

その後、あなたの問題は解決されます...

于 2013-05-09T18:17:55.630 に答える
1

最初のパラメータとしてidを渡す必要があります。

$this->User->delete($id, $cascade);
于 2012-10-17T13:47:56.573 に答える
0

これを使用すると、カスケードなしで削除できます。

 $this->Todo->delete($this->request->data('Todo.id'));

あなたはこの前にフックすることができます

function beforeDelete(){

}

これが私の完全な削除アクションです:

function delete($id = null){

     $this->Todo->recursive = 1;

            // new
            $todo = $this->Todo->read(null,$id);
            if($id == null || $todo == null) {
                $this->Session->setFlash('Todo existiert nicht.');
                $this->redirect(array('action' => 'index'));
                return;
            }
            $this->set('todo',$todo);
            $this->Todo->delete($this->request->data('Todo.id'));
            $this->redirect(array('action' => 'index'));
            return;


}
于 2013-10-07T15:03:59.213 に答える