2013-02-20 98 views
2

如何更新一個表的字段,我的模型名爲User,並且我想要更改 字段'enable'。 我這樣做。如何更新字段cakephp

function setstatus($id = null) 
{ 
    $this->User->id = $id; 
    if (!$this->User->exists()) 
    { 
     $this->Session->setFlash('Invalid User', 'error'); 
     $this->redirect(array('action' => 'index')); 
    } 

    $valor = false; 
    $enable = $this->User->read('enable'); 
    if ($enable == false) 
     $valor = true; 

    $this->User->saveField('enable', $valor); 
    $this->redirect(array('action' => 'index')); 
      $this->Session->setFlash('User update success', 'info'); 
} 

但這不工作正常。 沒有改變的領域。請幫助我... 我使用CakePHP 2.3如果不知道如何在cakephp 2.3中做到這一點可能就像cakephp 1.3。

+0

嘗試寫入會話之前,您應該不會重定向... ^^ – mark 2013-02-20 16:38:23

+0

啓用字段是在模型生成後創建的。如果是的話,清除臨時文件並清除緩存。這將解決它.. – 2013-02-21 03:55:46

回答

2

我回答自己的解決方案是從$this->ModelName->read(field);採取的返回值作爲array ['model']['field']

下面的代碼:

function setstatus($id = null) 
{ 
    $this->User->id = $id; 
    if (!$this->User->exists()) 
    { 
     $this->Session->setFlash('Invalid user', 'error'); 
     $this->redirect(array('action' => 'administration')); 
    } 

    $enable= $this->User->read('enable'); 
    $msj = 'The user has been enabled'; 
    if ($enable['User']['enable'] == 1) 
    { 
     $enable= 0; 
     $msj = 'The user is no longer enable'; 
    } 
    else 
     $enable= 1; 

    $this->User->saveField('enable', $enable); 
    $this->Session->setflash($msj, 'info'); 
    $this->redirect(array('action' => 'administration')); 
} 
+2

你能寫英文嗎?謝謝。 – j0k 2013-02-20 18:49:57

+0

@ j0k嗨,我只是翻譯它。請檢查它,並讓我知道是否有意義... – 2014-04-28 14:59:51