Problema ao atualizar o registro

Boa tarde galera,

ja tentei varias formas e nao estou conseguindo ver o problema alguem poderia me ajudar, o caso é o seguinte tenho uma tabela de lançamento que quando o usuario cria a conta automaticamente faz um lancamento de abertura até esta funfando legal.

Mas quando eu altero o valor de abertura eu nao estou conseguindo alterar o registro que foi lançado, da uma erro Fatal error: Call to undefined method stdClass::save()

veja o codigo abaixo:




public function actionUpdate()

	{

		$model=$this->loadModel();


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['Conta']))

		{

			$model->attributes=$_POST['Conta'];

                        $model->saldo = funcao::valorHelper($_POST['Conta']['saldo']);

                        $model->limitecredito = funcao::valorHelper($_POST['Conta']['limitecredito']);

                        $model->vencimentolimite = funcao::gravadataHelper($_POST['Conta']['vencimentolimite']);

//                        CA_Debug::output_model($model);

			if($model->save()){

                                $lancamento = Lancamento::model()->findAll('conta_idconta ='.$model->id.'  AND categoria_idcategoria = 1');

                                $lancamento = Lancamento::model()->findByPk($lancamento->id);

                                $lancamento->tipo = (funcao::valorHelper($_POST['Conta']['saldo']) < 0)? 'D':'C';                           

                                $lancamento->valor = funcao::valorHelper($_POST['Conta']['saldo']);

                                $lancamento->valorpago = funcao::valorHelper($_POST['Conta']['saldo']);

                                $lancamento->save();

                                Yii::app()->user->setFlash('success','Conta atualizado com sucesso!');

				$this->redirect(array('index'));

                        }

		}


		$this->render('update',array(

			'model'=>$model,

                       'tipocontas'=>Tipoconta::model()->findAll('situacao = 1'),

                        'bancos'=>Banco::model()->findAll(array('order'=>'codigo ASC')),

		));

	}



Me ajude pois ja estou louco e nao estou conseguindo visualizar este erro!

tenta




public function actionUpdate($id)

        {

                $model=$this->loadModel($id);




porque loadModel não está retornando a model e , ao usar como object, ele esta se convertendo para o object padrão do php ( stdClass )que não contém um método ‘save’

Desculpe ai acho que eu nao expliquei direito a pergunta o erro esta dando neste save:

$lancamento->save();

Como pode ver depois que salvo o registro eu tento salvar uma atualizaçao do model lancamento é ai que da o erro, pois eu nao sei se estou fazendo correto eu busco o registro altero os valores e depois tento salvar é onde acontece o erro.

Nao sei se esta é a melhor forma de fazer isso pois localizo atraves de duas condiçoes.

tah certo, eu nao li direito a primeira vez

então o problema esta que findAll retorna array e então vc esta usando esse array como objeto para usar o findByPk

E além do que o Gustavo falou acho que não faz muito sentido vc fazer dois "find" para o mesmo registro.

Altera o findAll para find como o Gustavo disse, remova a linha do findByPk e antes de alterar os valores joga um if($lancamento) para ter certeza de que este registro foi encontrado.

Valew Problema resolvido,atravez no metodo find()

Obrigado