Записать активные отправлено 0 вместо 1 и 1 вместо 0, но все еще дает свой правильный успех Flash - PullRequest
0 голосов
/ 02 мая 2019

Когда я получаю успешно НЕ УКАЗАНО (1)!база данных сохраняет цифру как 1, и когда я получаю ответ успешно добавлен (1)!база данных сохраняет цифру как 0. Я очень потерян и сбит с толку из-за моей проблемы.Есть что-то особенное, чего я не понимаю с CakePHP?

public function enlist($user_id_main, $user_id_from) {
    $this->render(false);
    $this->loadModel('Enlist');
    $enlist = $this->Enlist->getEnlist($user_id_main, $user_id_from);
    if (!empty($enlist)){

        dump($enlist);
        dump($this->Enlist->isActiveSub($user_id_main, $user_id_from));

        if ($enlist['active']) {

            $enlist -> active = 0;

            if($this->Enlist->save($enlist)) {
                dump($enlist);
            $this->Flash->success(__('Successfully UNENLISTED(1)!'));
            }
        } else {

            $enlist -> active = 1;

            if($this->Enlist->save($enlist)) {
                dump($enlist);
            $this->Flash->success(__('Successfully ENLISTED(1)!'));
            }
        }

    } else {
        $en = $this->Enlist->newEntity(['validate'=>'validationForEnlist']);
        $en['user_id_main'] = $user_id_main;
        $en['user_id_for'] = $user_id_from;
        $en['permited'] = 1;
        $en['active'] = 1;
       if ($this->Enlist->save($en)){
                $this->Flash->success(__('Successfully ENLISTED!'));
       }
    }
}

1 Ответ

0 голосов
/ 02 мая 2019

Я бы сбросил активный индекс на $ enlist сразу после условия:

if ($enlist['active']) {
    unset($enlist['active']);
    $enlist -> active = 0;
    ...

} else {
    unset($enlist['active']);
    $enlist -> active = 1;
    ...
}

Я предполагаю, что Cake смущен, потому что у вас есть и $enlist['active'], и $enlist->active. Если это не сработает, вы можете попробовать установить active в качестве массива, например

$enlist['active'] = 0;

вместо

$enlist -> active = 0;
...