Extraer datos multiples usando auxiliars Editado de un objeto

Inserción de un objeto


En este ejercicio identificaremos como funciona la función insert_data del orm.
Para agilizar el proceso utilizaremos el código del ejemplo 7 y le realizaremos una pequeña modificación.

Con los datos anteriores creados, procederemos a crear el controlador y el template para este ejercicio, del siguiente modo:
1)
Creamos el controlador example_orm_insert.php en la ruta: work/example_orm_insert.php con la siguiente información:

<?php

require('configs/include.php');

class 
c_example_orm_insert extends super_controller {
    
    public function 
add()
    {
        
$person = new person($this->post);
        
$person->exceptions();
        
        
$this->orm->connect();
        
$this->orm->insert_data("normal",$person);
        
$this->orm->close();
        
        
$this->temp_aux 'message.tpl';
        
$this->engine->assign('type_warning',"success");
        
$this->engine->assign('msg_warning',"Persona agregada correctamente");
    }

    public function 
display()
    {
        
$this->engine->display('header.tpl');
        
        if(
$this->error==1)
        {
            
$this->engine->assign('object',$this->post);
            
$this->engine->assign('type_warning',$this->type_warning);
            
$this->engine->assign('msg_warning',$this->msg_warning);
            
$this->temp_aux 'message.tpl';
        }
        
        
$this->engine->display($this->temp_aux);
        
$this->engine->display('example_orm_insert.tpl');
        
$this->engine->display('footer.tpl');
    }
    
    public function 
run()
    {
        try {if (isset(
$this->get->option)){$this->{$this->get->option}();}}
        catch (
Exception $e) {$this->error=1$this->msg_warning=$e->getMessage();}    
        
$this->display();
    }
}

$call = new c_example_orm_insert();
$call->run();

?>

2) Creamos el template example_orm_insert.tpl en la ruta: work/templates/t_dark/example_orm_insert.tpl con la siguiente información:

<form class="well form-search" method="post" action="{$gvar.l_global}example_orm_insert.php?option=add">
<legend>Add a Person</legend>
<fieldset>
<table cellspacing="2">
<tr><td>Ingrese el nombre: <input type="text" name="name" value="{if isset($object->name)}{$object->name}{/if}" /></td>
<td>Ingrese el apellido: <input type="text" name="lastname" value="{if isset($object->lastname)}{$object->lastname}{/if}" />
</td></tr>
<tr><td>Ingrese el documento: <input type="text" name="document" value="{if isset($object->document)}{$object->document}{/if}" /></td>
<td>Ingrese la edad: <input type="text" name="age" value="{if isset($object->age)}{$object->age}{/if}" />
</td></tr>
<tr><td>Ingrese el jefe (boss): <input type="text" name="boss" value="{if isset($object->boss)}{$object->boss}{/if}" /></td></tr>
<tr><td><input class="btn btn-primary" type="submit" value="Add"></td></tr>
</table>
</fieldset>
</form>

Finalmente se accede por navegador a work/example_orm_insert.php y se agregan datos.

$this->orm->insert_data(par1, par2, par3):

- par1: recibe el case de nivel 2 que se va a ejecutar dentro de la función insert (el tipo de insert que se desea realizar). El insert_data solo puede insertar 1 dato a la vez (en el caso del ejemplo el valor del par1 es igual a "normal" que es el caso por defecto que crea el CRUD en el db.php para inserción de datos).
- par2: recibe el objeto que se va a insertar en la base de datos (en este caso $person).
- par3 (opcional): recibe un string ('yes' o 'no') que indica si se desea obtener el último id insertado en la base de datos de la clase actual (muy útil cuando se trabaja con id autoincrement y se esta insertando por ejemplo una factura con detalles u otra serie de ejemplos que requieren este datos) - Luego para acceder a ese dato se utilizaría la variable $this->orm->last_id["nombre_de_la_clase"];

Notas:
  • El ejemplo se ha modificado para que cuando se inserte un dato y este sea invalido se vuelva a cargar en el formulario, para esto se ha agregado la linea $this->engine->assign('object',$this->post); después de this->error==1 y se han realizado unas modificaciones con unos ifs al template
  • Se puede probar la funcionalidad de throw_sql_exception intentando insertar una persona con documento repetido.
Extraer datos multiples usando auxiliars Editado de un objeto