https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=190.128.66.60&feedformat=atomKumbiaPHP Framework Wiki - Contribuciones del usuario [es]2024-03-29T01:51:12ZContribuciones del usuarioMediaWiki 1.34.1https://wiki.kumbiaphp.com/index.php?title=CRUD&diff=2837CRUD2010-07-04T17:23:23Z<p>190.128.66.60: /* Actualizando Registros existentes */</p>
<hr />
<div>=Create (Crear), Read (Leer), Update (Actualizar), Delete (Borrar)=<br />
<br />
[[ActiveRecord]] implementa automáticamente las cuatro operaciones básicas sobre una tabla: Crear, Leer, Actualizar y Borrar.<br />
<br />
==Consultando Registros==<br />
<br />
Para consultar en una base de datos tenemos que tener claro qué vamos a buscar, es decir definir un criterio de búsqueda. Este criterio le permite a [[ActiveRecord]] devolver el conjunto de objetos que coincidan con este y así poder trabajar esa información.<br />
<br />
El camino más sencillo para encontrar determinado registro en una tabla es especificar su llave primaria. En Kumbia los modelos soportan el método ‘find’, así como otros métodos complementarios para consultas. Este método permite consultar registros a partir de sus llaves primarias así como con parámetros. Nótese que este método devuelve el valor boolean false en caso de no encontrar registros que coincidan con la búsqueda.<br />
<br />
Ejemplo<br />
<source lang=php><br />
# Buscar el Producto con id = 38<br />
$producto = $Productos->find(38);<br />
print $producto->nombre; # Imprime el nombre del producto id=38<br />
</source><br />
<br />
Igualmente necesitamos hacer consultas a partir de otros atributos del modelo no solamente a partir de su llave primaria. [[ActiveRecord]] proporciona una serie de parámetros para crear consultas especializadas que nos permitan acceder a los registros que necesitamos. Para ilustrar esto veamos:<br />
<br />
Ejemplo<br />
<source lang=php><br />
# Buscar los Productos en estado = ‘C’ y cuyo valor sea menor a 15000<br />
foreach( $Productos->find(“estado=’C’ and valor<15000” ) <br />
print $producto->nombre;<br />
}<br />
<br />
#Buscar el primer producto en estado = ‘C’ ordenado por fecha<br />
foreach($Productos->find_first(“conditions: estado=’C’”,<br />
“order: fecha desc”) as $producto){<br />
print $producto->nombre;<br />
}<br />
<br />
#Buscar el primer producto en estado = ‘$estado’ ordenado por fecha<br />
$producto = $Productos->find_first(“conditions: estado=’$estado’”,<br />
“order: fecha desc”);<br />
print $producto->nombre;<br />
</source><br />
<br />
Cabe destacar que el uso de ‘find_first’ devuelve el primer registro que coincida con la búsqueda y ‘find’ todos los registros.<br />
<br />
==El poderoso Find==<br />
<br />
Aunque aparentemente [[ActiveRecord]] elimina el uso del SQL en un gran porcentaje, realmente no lo es, simplemente crea una capa de abstracción superior que puede llegar a limitarse en determinados momentos cuando las búsquedas se empiezan a volver complejas. Kumbia PHP Framework permite el uso del lenguaje SQL ya sea utilizando una instancia de [[ActiveRecord]] o accediendo a la capa de abstracción de datos como ultimo recurso (lo cual no es recomendado). El lenguaje SQL es una poderosa herramienta que no podemos dejar de usar y que debemos tener a la mano en uno de esos casos extremos en lo demás [[ActiveRecord]] se encargará de facilitarnos la vida en gran medida.<br />
<br />
Sin parámetros extra [[ActiveRecord]] convierte una consulta en un select from estándar pero podemos agregar otras opciones para especializar la búsqueda y obtener más detalladamente lo que buscamos.<br />
<br />
El parámetro conditions: permite especificar un conjunto de condiciones que van a actuar como el ‘where’ de nuestra consulta. Igualmente [[ActiveRecord]] no garantiza que los registros sean devueltos en el orden requerido asi que podemos utilizar order: para realizar el ordenamiento. El parámetro limit: nos permite especificar el número máximo de registros a ser devueltos.<br />
<br />
Ejemplo<br />
<source lang=php><br />
#Buscar los productos en estado = ‘$estado’ ordenado por fecha y valor<br />
foreach($Productos->find(“conditions: estado=’$estado’”,<br />
“order: fecha Desc, valor”,<br />
“limit: 30”) as $prod){<br />
print $prod->nombre;<br />
}<br />
</source><br />
<br />
Importante <br />
Advertencia: En Oracle la funcionalidad limit podría no funcionar como se espera. Utilice la condición rownum < numero_filas para hacer esto.<br />
<br />
Ejemplo<br />
<source lang=php><br />
#Buscar los productos en estado = ‘$estado’ ordenado por fecha y valor<br />
foreach($Productos->find(“conditions: estado=’$estado’and rownum <= 30”,<br />
“order: fecha Desc, valor”) as $prod){<br />
print $prod->nombre;<br />
}<br />
</source><br />
<br />
==Promedio, Contando, Sumando, Mínimo y Máximo==<br />
<br />
Una de las tareas más comunes es el uso de contadores y sumadores de registros en consultas, así como el uso de otras funciones de agrupación. El método de conteo de registros se llama count y puede recibir como parámetros condiciones de este.<br />
<br />
Ejemplo<br />
<source lang=php><br />
#Cuantos productos hay?<br />
print Productos->count();<br />
<br />
#Cuantos productos hay con estado = 'A'?<br />
print Productos->count(“estado='A'”);<br />
</source><br />
<br />
Las funciones de agrupación suma, mínimo, promedio y máximo, son utilizadas de esta forma:<br />
<br />
Ejemplo<br />
<source lang=php><br />
#Cuantos suma el valor de todos los productos?<br />
print Productos->sum(“valor”);<br />
<br />
#Cuantos suma el valor de los productos activos?<br />
print Productos->sum(“valor”, “conditions: estado='A'”);<br />
<br />
#Promedio del valor de los productos activos?<br />
print Productos->average(“valor”, “conditions: estado='A'”);<br />
<br />
#El valor mínimo de los productos activos?<br />
print Productos->minumum(“valor”, “conditions: estado='A'”);<br />
<br />
#El valor máximo de los productos activos?<br />
print Productos->maximum(“valor”, “conditions: estado='A'”);<br />
</source><br />
<br />
==Actualizando Registros existentes==<br />
<br />
Realmente no hay mucho que decir acerca de cómo actualizar registros. Si tienes un objeto [[ActiveRecord]] (por ejemplo un producto de la base de datos), puedes actualizar llamando su método save(). Si este objeto ha sido leído de la base de datos puedes actualizar el registro correspondiente mediante save, en caso de que no exista se insertará un registro nuevo.<br />
<br />
Ejemplo<br />
<source lang=php><br />
$producto = $Productos->find(123);<br />
$producto->nombre = "Televisor";<br />
$producto->save(); <br />
</source><br />
<br />
Otra forma de actualizar registros es utilizar el método update() de esta forma:<br />
<br />
Ejemplo<br />
<source lang=php><br />
$producto = $Productos->find(456);<br />
$producto->update(“nombre: Televisor”, “cantidad: 2”);<br />
$producto->save(); <br />
</source><br />
<br />
==Borrando Registros==<br />
<br />
Tampoco hay mucho que decir acerca de cómo eliminar registros. Si tienes un objeto [[ActiveRecord]] (por ejemplo un producto de la base de datos), puedes eliminarlo llamando a su método delete().<br />
<br />
Ejemplo<br />
<source lang=php><br />
$Productos->delete(123);<br />
</source><br />
<br />
==Propiedades Soportadas==<br />
<br />
{|<br />
!Propiedad<br />
!Descripción<br />
|-<br />
|$fields ||Listado de Campos de la tabla que han sido mapeados<br />
|-<br />
|$count ||Conteo del ultimo Resultado de un Select<br />
|-<br />
|$primary_key ||Listado de columnas que conforman la llave primaria<br />
|-<br />
|$non_primary ||Listado de columnas que no son llave primaria<br />
|-<br />
|$not_null ||Listado de campos que son not_null<br />
|-<br />
|$attributes_names ||Nombres de todos los campos que han sido mapeados<br />
|}<br />
<br />
[[Categoría:Active Record API]]</div>190.128.66.60