Diferencia entre revisiones de «Consultas»
(Página creada con 'A continuación veremos una referencia de los métodos que posee la clase ActiveRecord y su funcionalidad respectiva. Éstos se encuentran organizados alfabéticamente: =Consu...') |
(→find) |
||
(No se muestran 15 ediciones intermedias de otro usuario) | |||
Línea 7: | Línea 7: | ||
==distinct== | ==distinct== | ||
+ | '''Sintaxis''' | ||
<source lang=php line> | <source lang=php line> | ||
distinct([string $atributo_entidad], [“conditions: …], [“order: …”], [“limit: …“], [“column: …”]) | distinct([string $atributo_entidad], [“conditions: …], [“order: …”], [“limit: …“], [“column: …”]) | ||
Línea 13: | Línea 14: | ||
Este método ejecuta una consulta de distinción única en la entidad, funciona igual que un “select unique campo” viéndolo desde la perspectiva del SQL. El objetivo es devolver un array con los valores únicos del campo especificado como parámetro. | Este método ejecuta una consulta de distinción única en la entidad, funciona igual que un “select unique campo” viéndolo desde la perspectiva del SQL. El objetivo es devolver un array con los valores únicos del campo especificado como parámetro. | ||
+ | '''Ejemplo''' | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $unicos = $this->Usuarios->distinct(“estado”) | |
− | + | # array(‘A’, ‘I’, ‘N’) | |
</source> | </source> | ||
− | Los parámetros conditions, order y limit funcionan idénticamente que en la función find y permiten modificar la forma o los mismos valores de retorno devueltos por ésta. | + | Los parámetros conditions, order y limit funcionan idénticamente que en la función find y permiten modificar la forma o los mismos valores de retorno devueltos por ésta. |
==find_all_by_sql (string $sql) == | ==find_all_by_sql (string $sql) == | ||
Línea 24: | Línea 26: | ||
Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un array de objetos de la misma clase con los valores de los registros en estos. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este. | Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un array de objetos de la misma clase con los valores de los registros en estos. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este. | ||
− | Ejemplo: | + | '''Ejemplo: ''' |
<source lang=php line> | <source lang=php line> | ||
− | + | foreach($Usuarios->find_all_by_sql("select * from usuarios | |
− | + | where codigo not in (select codigo | |
− | + | from ingreso)") as $usuario){ | |
− | + | print $Usuario->nombre; | |
− | + | } | |
</source> | </source> | ||
− | Este ejemplo consultamos todos los usuarios con una sentencia where especial e imprimimos sus nombres. La idea es que los usuarios consultados no pueden estar en la entidad ingreso. | + | Este ejemplo consultamos todos los usuarios con una sentencia where especial e imprimimos sus nombres. La idea es que los usuarios consultados no pueden estar en la entidad ingreso. |
==find_by_sql (string $sql) == | ==find_by_sql (string $sql) == | ||
Línea 40: | Línea 42: | ||
Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un objeto que representa el resultado encontrado. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este. | Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un objeto que representa el resultado encontrado. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este. | ||
− | Ejemplo: | + | '''Ejemplo:''' |
<source lang=php line> | <source lang=php line> | ||
− | + | $usuario = $Usuarios->find_by_sql("select * from usuarios | |
− | + | where codigo not in (select codigo | |
− | + | from ingreso) limit 1"); | |
− | + | print $Usuario->nombre; | |
</source> | </source> | ||
Línea 53: | Línea 55: | ||
==find_first == | ==find_first == | ||
+ | '''Sintaxis:''' | ||
<source lang=php line> | <source lang=php line> | ||
find_first([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”]) | find_first([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”]) | ||
Línea 59: | Línea 62: | ||
El método “find_first” devuelve el primer registro de una entidad o la primera ocurrencia de acuerdo a unos criterios de búsqueda u ordenamiento. Los parámetros son todos opcionales y su orden no es relevante, cuando se invoca sin parámetros devuelve el primer registro insertado en la entidad. Este método es muy flexible y puede ser usado de muchas formas: | El método “find_first” devuelve el primer registro de una entidad o la primera ocurrencia de acuerdo a unos criterios de búsqueda u ordenamiento. Los parámetros son todos opcionales y su orden no es relevante, cuando se invoca sin parámetros devuelve el primer registro insertado en la entidad. Este método es muy flexible y puede ser usado de muchas formas: | ||
− | Ejemplo: | + | '''Ejemplo:''' |
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find_first(“conditions: estado=’A’ ”,“order: fecha desc”); | |
</source> | </source> | ||
Línea 70: | Línea 73: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find_first(123); | |
</source> | </source> | ||
Línea 77: | Línea 80: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find_first(“conditions: estado=’A’ ”,“limit: 1”); | |
</source> | </source> | ||
Línea 83: | Línea 86: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find_first(“columns: nombre, estado”); | |
</source> | </source> | ||
Línea 89: | Línea 92: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $Usuarios->find_first(“estado=’A’”); | |
</source> | </source> | ||
Línea 95: | Línea 98: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find_first(“id=’123’”); | |
− | + | $this->Usuarios->find_first(123); | |
</source> | </source> | ||
==find == | ==find == | ||
+ | '''Sintaxis''' | ||
<source lang=php line> | <source lang=php line> | ||
find([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”]) | find([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”]) | ||
Línea 107: | Línea 111: | ||
El método “find” es el principal método de búsqueda de ActiveRecord, devuelve todas los registros de una entidad o el conjunto de ocurrencias de acuerdo a unos criterios de búsqueda. Los parámetros son todos opcionales y su orden no es relevante, incluso pueden ser combinados u omitidos si es necesario. Cuando se invoca sin parámetros devuelve todos los registros en la entidad. | El método “find” es el principal método de búsqueda de ActiveRecord, devuelve todas los registros de una entidad o el conjunto de ocurrencias de acuerdo a unos criterios de búsqueda. Los parámetros son todos opcionales y su orden no es relevante, incluso pueden ser combinados u omitidos si es necesario. Cuando se invoca sin parámetros devuelve todos los registros en la entidad. | ||
− | Ejemplo: | + | No hay que olvidarse de incluir un espacio después de los dos puntos (:) en cada parámetro. |
+ | |||
+ | '''Ejemplo: ''' | ||
<source lang=php line> | <source lang=php line> | ||
− | + | foreach($Usuarios->find(“conditions: estado=’A’”,“order: fecha desc”) as $usuario){ | |
− | + | print $usuario->nombre; | |
− | + | }//fin del foreach | |
− | |||
</source> | </source> | ||
Línea 121: | Línea 126: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find(123); | |
</source> | </source> | ||
Línea 129: | Línea 134: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find(“conditions: estado=’A’ ”,“limit: 5”); | |
</source> | </source> | ||
Línea 135: | Línea 140: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $Usuarios->find(“columns: nombre, estado”); | |
</source> | </source> | ||
Línea 141: | Línea 146: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->find (“estado=’A’”); | |
</source> | </source> | ||
Se puede utilizar la propiedad count para saber cuántos registros fueron devueltos en la búsqueda. | Se puede utilizar la propiedad count para saber cuántos registros fueron devueltos en la búsqueda. | ||
+ | |||
+ | '''Nota:''' No es necesario usar find('id: $id') para el find, se usa directament find($id) | ||
==limit== | ==limit== | ||
Línea 151: | Línea 158: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Preguntas->find('limit:5', 'offset: 1'); | |
</source> | </source> | ||
Línea 161: | Línea 168: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $this->Usuarios->select_one(“current_time”) | |
</source> | </source> | ||
− | En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto. | + | En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto. |
==select_one(string $select_query) (static) == | ==select_one(string $select_query) (static) == | ||
Línea 171: | Línea 178: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | ActiveRecord::select_one(“current_time”) | |
</source> | </source> | ||
− | En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto. | + | En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto. |
==exists == | ==exists == | ||
Línea 181: | Línea 188: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | ||
− | + | $Usuarios->id = 3; | |
− | + | ||
− | + | if($Usuarios->exists()){ | |
− | + | print "Ya existe el id = 3"; | |
− | + | }//fin del if | |
+ | |||
+ | $Usuarios->exists(“nombre='Juan Perez'”) | ||
+ | $Usuarios->exists(2); // Un Usuario con id->2? | ||
+ | |||
</source> | </source> | ||
Línea 194: | Línea 205: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $resultados = $Productos->find_all_by(“categoria”, “Insumos”); | |
</source> | </source> | ||
Línea 202: | Línea 213: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $resultado = $Productos->find_by_categoria(“Insumos”); | |
</source> | </source> | ||
Línea 210: | Línea 221: | ||
<source lang=php line> | <source lang=php line> | ||
− | + | $resultados = $Productos->find_all_by_categoria(“Insumos”); | |
</source> | </source> |
Revisión actual del 21:15 6 jul 2010
A continuación veremos una referencia de los métodos que posee la clase ActiveRecord y su funcionalidad respectiva. Éstos se encuentran organizados alfabéticamente:
Sumario
Consulta[editar]
Métodos para hacer consulta de Registros:
distinct[editar]
Sintaxis
distinct([string $atributo_entidad], [“conditions: …], [“order: …”], [“limit: …“], [“column: …”])
Este método ejecuta una consulta de distinción única en la entidad, funciona igual que un “select unique campo” viéndolo desde la perspectiva del SQL. El objetivo es devolver un array con los valores únicos del campo especificado como parámetro.
Ejemplo
$unicos = $this->Usuarios->distinct(“estado”)
# array(‘A’, ‘I’, ‘N’)
Los parámetros conditions, order y limit funcionan idénticamente que en la función find y permiten modificar la forma o los mismos valores de retorno devueltos por ésta.
find_all_by_sql (string $sql)[editar]
Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un array de objetos de la misma clase con los valores de los registros en estos. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este.
Ejemplo:
foreach($Usuarios->find_all_by_sql("select * from usuarios
where codigo not in (select codigo
from ingreso)") as $usuario){
print $Usuario->nombre;
}
Este ejemplo consultamos todos los usuarios con una sentencia where especial e imprimimos sus nombres. La idea es que los usuarios consultados no pueden estar en la entidad ingreso.
find_by_sql (string $sql)[editar]
Este método nos permite hacer una consulta por medio de un SQL y el resultado devuelto es un objeto que representa el resultado encontrado. La idea es que el uso de este método no debería ser común en nuestras aplicaciones ya que ActiveRecord se encarga de eliminar el uso del SQL en gran porcentaje, pero hay momentos en que es necesario que seamos más específicos y tengamos que recurrir al uso de este.
Ejemplo:
$usuario = $Usuarios->find_by_sql("select * from usuarios
where codigo not in (select codigo
from ingreso) limit 1");
print $Usuario->nombre;
Este ejemplo consultamos todos los usuarios con una sentencia where especial e imprimimos sus nombres. La idea es que el usuario consultado no puede estar en la entidad ingreso.
find_first[editar]
Sintaxis:
find_first([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”])
El método “find_first” devuelve el primer registro de una entidad o la primera ocurrencia de acuerdo a unos criterios de búsqueda u ordenamiento. Los parámetros son todos opcionales y su orden no es relevante, cuando se invoca sin parámetros devuelve el primer registro insertado en la entidad. Este método es muy flexible y puede ser usado de muchas formas:
Ejemplo:
$this->Usuarios->find_first(“conditions: estado=’A’ ”,“order: fecha desc”);
En este ejemplo buscamos el primer registro cuyo estado sea igual a “A” y ordenado descendentemente, el resultado de éste, se carga a la variable $Usuarios e igualmente devuelve una instancia del mismo objeto ActiveRecord en caso de éxito o false en caso contrario.
Con el método find_first podemos buscar un registro en particular a partir de su id de esta forma:
$this->Usuarios->find_first(123);
Así obtenemos el registro 123 e igualmente devuelve una instancia del mismo objeto ActiveRecord en caso de éxito o false en caso contrario. Kumbia genera una advertencia cuando los criterios de búsqueda para find_first devuelven más de un registro, para esto podemos forzar que se devuelva solamente uno, mediante el parámetro limit, de esta forma:
$this->Usuarios->find_first(“conditions: estado=’A’ ”,“limit: 1”);
Cuando queremos consultar sólo algunos de los atributos de la entidad podemos utilizar el parámetro columns así:
$this->Usuarios->find_first(“columns: nombre, estado”);
Cuando especificamos el primer parámetro de tipo string, ActiveRecord asumirá que son las condiciones de búsqueda para find_first, así:
$Usuarios->find_first(“estado=’A’”);
De esta forma podemos también deducir que estas 2 sentencias arrojarían el mismo resultado:
$this->Usuarios->find_first(“id=’123’”);
$this->Usuarios->find_first(123);
find[editar]
Sintaxis
find([integer $id], [“conditions: …”], [“order: …”], [“limit: …], [“columns: …”])
El método “find” es el principal método de búsqueda de ActiveRecord, devuelve todas los registros de una entidad o el conjunto de ocurrencias de acuerdo a unos criterios de búsqueda. Los parámetros son todos opcionales y su orden no es relevante, incluso pueden ser combinados u omitidos si es necesario. Cuando se invoca sin parámetros devuelve todos los registros en la entidad.
No hay que olvidarse de incluir un espacio después de los dos puntos (:) en cada parámetro.
Ejemplo:
foreach($Usuarios->find(“conditions: estado=’A’”,“order: fecha desc”) as $usuario){
print $usuario->nombre;
}//fin del foreach
En este ejemplo buscamos todos los registros cuyo estado sea igual a “A” y devuelva éstos ordenados descendentemente, el resultado de este es un array de objetos de la misma clase con los valores de los registros cargados en ellos, en caso de no hayan registros devuelve un array vacío.
Con el método find podemos buscar un registro en particular a partir de su id de esta forma:
$this->Usuarios->find(123);
Así obtenemos el registro 123 e igualmente devuelve una instancia del mismo objeto ActiveRecord en caso de éxito o false en caso contrario. Como es un solo registro no devuelve un array, sino que los valores de éste se cargan en la misma variable si existe el registro.
Para limitar el número de registros devueltos, podemos usar el parámetro limit, así:
$this->Usuarios->find(“conditions: estado=’A’ ”,“limit: 5”);
Cuando queremos consultar sólo algunos de los atributos de la entidad podemos utilizar el parámetro columns así:
$Usuarios->find(“columns: nombre, estado”);
Cuando especificamos el primer parámetro de tipo string, ActiveRecord asumirá que son las condiciones de búsqueda para find, así:
$this->Usuarios->find (“estado=’A’”);
Se puede utilizar la propiedad count para saber cuántos registros fueron devueltos en la búsqueda.
Nota: No es necesario usar find('id: $id') para el find, se usa directament find($id)
limit[editar]
ActiveRecord permite realizar búsquedas limitando la cantidad de resultados que serán devueltos, no es un método es un parámetro que recibe las consultas.
$this->Preguntas->find('limit:5', 'offset: 1');
Esta consulta busca todas las Preguntas limitando la cantidad de resultados a devolver en este caso 5.
select_one(string $select_query)[editar]
Este método nos permite hacer ciertas consultas como ejecutar funciones en el motor de base de datos sabiendo que éstas devuelven un solo registro.
$this->Usuarios->select_one(“current_time”)
En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto.
select_one(string $select_query) (static)[editar]
Este método nos permite hacer ciertas consultas como ejecutar funciones en el motor de base de datos, sabiendo que éstas devuelven un solo registro. Este método se puede llamar de forma estática, esto significa que no es necesario que haya una instancia de ActiveRecord para hacer el llamado.
ActiveRecord::select_one(“current_time”)
En el ejemplo queremos saber la hora actual del servidor devuelta desde MySQL así que podemos usar este método para esto.
exists[editar]
Este método nos permite verificar si el registro existe o no en la base de datos mediante su id o una condición.
$Usuarios->id = 3;
if($Usuarios->exists()){
print "Ya existe el id = 3";
}//fin del if
$Usuarios->exists(“nombre='Juan Perez'”)
$Usuarios->exists(2); // Un Usuario con id->2?
find_all_by[editar]
Este método nos permite realizar una búsqueda por algún campo
$resultados = $Productos->find_all_by(“categoria”, “Insumos”);
find_by_*campo*[editar]
Este método nos permite realizar una búsqueda por algún campo usando el nombre del método como nombre de éste. Devuelve un solo registro.
$resultado = $Productos->find_by_categoria(“Insumos”);
find_all_by_*campo*[editar]
Este método nos permite realizar una búsqueda por algún campo usando el nombre del método como nombre de éste. Devuelve todos los registros que coincidan con la búsqueda.
$resultados = $Productos->find_all_by_categoria(“Insumos”);