CakePHP Aro-> save () не работает при использовании внутри afterSave () в модели User - PullRequest
1 голос
/ 30 августа 2011

До сих пор пытался сделать эту работу около часа, сейчас я использую cakephp 2, и все работает отлично, за исключением этого кода

Вот то, что у меня внутри Модель пользователя

var $actsAs = array('Acl' => array('type' => 'requester'));

public function bindNode($user)
{
    # ativando o simplified node mode
    # trabalharemos apenas com permissões referentes ao grupo e não a cada usuário
    #
    return array('model' => 'Grupo', 'foreign_key' => $user['User']['grupo_id']);
}

public function parentNode()    # utilizado para determinar um relacionmamento Pai -> Filho
{
    if (!$this->id && empty($this->data))
        return null;

    if (isset($this->data['User']['grupo_id']))
        $groupId = $this->data['User']['grupo_id'];
    else
        $groupId = $this->field('grupo_id');

    if (!$groupId)
        return null;
    else
        return array('Grupo' => array('id' => $groupId));
}

public function afterSave( $created )   # depois que as infos deste usuario sao salvas
{
    # Funcao para permitir atualizar os grupos dos usuarios
    if (!$created)
    {
        $parent = $this->parentNode();
        $parent = $this->node($parent);
        $node = $this->node();
        $aro = $node[0];
        $aro['Aro']['parent_id'] = $parent[0]['Aro']['id'];
        $this->Aro->save($aro);
    }
}

В основном он делает все просто отлично, обновляет таблицу User с правильным group_id, и если я использую debug ($ aro), я вижу, что он пытается обновить с правильной информацией.

Однако $ this-> Aro-> save ($ aro), похоже, не работает, также Cake не показывает никаких сообщений об ошибках, перепробовал несколько способов отладки, но ошибки не отображается, просто не обновляется таблица aro.

У кого-нибудь есть идеи, почему это происходит?

PS: Grupo вместо Group и grupo_id вместо group_id также верны для таблиц, это просто перевод с английского на португальский только для этих двух случаев.

1 Ответ

0 голосов
/ 21 ноября 2011

Попробуйте распечатать (используя pr ($ aro)), чтобы напечатать содержимое массива $ aro.Если он содержит недопустимые имена полей (имена атрибутов, которых нет в таблице базы данных), операция сохранения завершится неудачей.

...