как обновить поле 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.

Author: tovaz, 2013-02-20

1 answers

Я отвечаю сам себе, решение состоит в том, чтобы взять возвращаемые значения из $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
Author: user2092568, 2014-04-28 15:01:52