Call to undefined method stdClass::update()

edited junio 2012 in Beta2
Buenos Días
.
.
.
$salidas = Input::request("salidas"); // guardo los datos enviados desde la vista en $salidas
$entrada = new Entradas(); // creo una instancia de Entradas
$lote = $entrada->find_by_sql("select estado from entradas where id =".$salidas['id']);
$lote->estado = 1;//cerrar lote
if($lote->update()){
Flash::valid('Operación exitosa');
.
.
.
También hice un if($lote->save()){
Pero me devuelve lo mismo Call to undefined method stdClass::save()

Existe este método en la beta2? o lo estoy aplicando mal?

Comentarios

  • todavía no he podido resolver este tema, agradecería mucho una ayudita.
    gracias
  • hasle var_dump a la variable lote a ver si en realidad es un objeto active_Record
  • SI existe pero estas guardando cualquiera cosa. A mi paso lo mismo una vez...

  • <?php

    public function accion(){

    //Este seria tu controller: 
    //Mas presisamente en tu accion (o metodo)

     try {   //primero revisa si has resibido el post de "salidas"
                 if (Input::hasPost('salidas')) {
                    $salida = new Salidas(Input::post('salidas'));// si como creo es una tabla.
    //Si lo de "salida" es solo obtener la id. Entonces deberia obtenerla por ejemplo asi: $id= Input::post('salidas.id'); 
    //No entiendo si estas pasando para registrar un "alta" de Salida o estas seleccionando una de ellas.
    // Tienes en tu vista algo como por ejemplo: Table::imgLink('imagenes/accion.png', 'modulo/evento/accion'); 
    // Por q ahi ya pasa la id.: public function "accion"(id){...}
    $entrada = new Entradas();
    $this->entrada = $entrada->find_first($salidas->id); // Ahora ya estamos trabajando en esa fila id en la tabla entrada que tiene el id de salida.
    //Con lo siguiente cambias el estado a 1; Si es lo q intentas hacer...
    if ($entrada->activar()) {
    Flash::valid("La entrada  {$entrada->id} ({$entrada->id}) fué activada");
    }
    //No entiendo q es lote? Es la verdadera tabla?
    //De la forma q lo pusiste (de andar) selecionas solo un campo llamado 'estado' de una tabla 'entrada' dnd entrada.id == salida.id
    // Si en vez de lo anterior quiere guardar una lote que es un objeto de Entrada.
    // Aunq creo q quieres hacer lo anterior.
    $lote= new Entradas();
    $this->lote= $entrada;
    if ($lote->save()) {
                        Flash::valid('El lote Ha Sido Agregado Exitosamente...!!!');
                        return Router::redirect();
                    } else {
                        Flash::warning('No se Pudieron Guardar los Datos...!!!');
                    }
                }
            } catch (KumbiaException $e) {
                View::excepcion($e);
            }
        }
    ?>

  • edited agosto 2012
    Correcion En table seria: 
    Table::imgLink('imagenes/accion.png', 'controller/vista/accion');

    Y si lo q haces es un alta debes directamente poner en tu vista al principio por ejemplo
    <?php echo Form::hidden('entrada.estado', NULL, 1) ?>

    Ahora si lo que quieres es actualizar el estado lo haces con 
    if ($entrada->activar()) {
    Flash::valid("La entrada  {$entrada->id} ({$entrada->id}) fué activada");
    }
    ///////////////////////////////////////
    Tambien puedes crear una propia.
    Dentro del "controller"
    $entrada = new Entradas();
    $this->entrada = $entrada->find_first($salidas->id);
    $entrada-> setestado();
    //Asi tb puedes ver el valor en con un: echo $entrada->setestado(); 
    if ($entrada->update()) {
                        Flash::valid('La entrada Ha Sido Actualizado Exitosamente...!!!');
                        return Router::redirect();
                    } else {
                        Flash::warning('No se Pudieron Guardar los Datos...!!!');
                        unset($this-> entrada); 
                    }

    Y en tu modelo puedes crear el metodo asi:

    public function setestado(){
    if($this->estado)return $this->estado=0;
    else return $this->estado=1;   
    }

    Que es mas o menos lo que hace el activar()  o desactivar(); Solo que haces ambas en una sola.

Sign In or Register to comment.