3.7.8 Atributos del Modelo
Los atributos del modelo te permiten establecer propiedades que pueden redefinir el comportamiento por defecto del modelo.
Para una lista completa de los atributos del modelo y sus respectivas descripciones, visita la API del CakePHP. Echa un vistazo a http://api.cakephp.org/1.2/class_model.html.
3.7.8.1 useDbConfig
La propiedad useDbConfig es un cadena de caracteres que especifica el nombre de la conexión a la base de datos usada para enlazar tu clase modelo a la tabla de la base de datos relacionada. Puedes estabecer el valor a cualquiera de las conexiones definidas dentro de tu fichero de configuración de tu base de datos. El fichero de configuración de la base de datos se encuentra en /app/config/database.php.
La propiedad useDbConfig tiene por defecto la conexión a la base de datos 'default' ( $useDbConfig = 'default'; )
Ejemplo de uso:
class Ejemplo extends AppModel {
var $useDbConfig = 'alternativo';
} class Ejemplo extends AppModel {var $useDbConfig = 'alternativo';}
3.7.8.2 useTable
La propiedad $useTable especifica el nombre de la tabla de la base de datos. Por defecto, el modelo usa la forma plural y en minúsculas del nombre de la clase del modelo. Establece este atributo al nombre de una tabla alternativa, o dale el valor false si deseas que el modelo no use una tabla de base de datos.
Ejemplo de uso:
class Ejemplo extends AppModel {
var $useTable = false; // Este modelo no usa una tabla de base de datos
} class Ejemplo extends AppModel {var $useTable = false; // Este modelo no usa una tabla de base de datos}
Alternativamente:
class Ejemplo extends AppModel {
var $useTable = 'exmp'; // Este modelo usa la tabla 'exmp' de la base de datos
} class Ejemplo extends AppModel {var $useTable = 'exmp'; // Este modelo usa la tabla 'exmp' de la base de datos}
3.7.8.3 tablePrefix
El nombre del prefijo de tabla usado para el modelo. El prefijo de tabla se establece inicialmente en el fichero de conexión a la base de datos /app/config/database.php. Por defecto es sin prefijo. Puedes sustituir la configuración por defecto estableciendo el atributo tablePrefix en el modelo.
Ejemplo de uso:
class Ejemplo extends AppModel {
var $tablePrefix = 'otros_'; // buscará la tabla 'otros_ejemplos'
} class Ejemplo extends AppModel {var $tablePrefix = 'otros_'; // buscará la tabla 'otros_ejemplos'}
3.7.8.4 primaryKey
Normalmente cada tabla tiene una clave primaria id. Puedes cambiar qué nombre de campo usará el modelo como clave primaria. Esto es común cuando se configura CakePHP para usar una tabla de base de datos ya existente.
Ejemplo de uso:
class Ejemplo extends AppModel {
var $primaryKey = 'ejemplo_id'; // ejemplo_id es el nombre del campo en la base de datos
} class Ejemplo extends AppModel {var $primaryKey = 'ejemplo_id'; // ejemplo_id es el nombre del campo en la base de datos}
3.7.8.5 displayField
El atributo displayField ('visualizarCampo') especifica qué campo de la base de datos debería ser usado como etiqueta para el registro. La etiqueta se utiliza en scaffolding y en llamadas find('lista'). El modelo usará por defecto el campo name o title.
Por ejemplo, para utilizar el campo nombre_de_usuario:
class Ejemplo extends AppModel {
var $displayField = 'nombre_de_usuario';
} class Ejemplo extends AppModel {var $displayField = 'nombre_de_usuario';}
No se pueden combinar nombres de campos múltiples en un único campo de display (de visualización). Por ejemplo, no puedes especificar array('nombre', 'apellido') como campo de visualización.
3.7.8.6 recursive
La propiedad $recursive define la profundidad a la que CakePHP ha de llegar para obtener los datos de modelos asociados mediante los métodos find() y findAll().
Imagina que tu aplicación muestra Grupos que pertenecen a un Dominio que tiene muchos Usuarios que, a su vez, tienen muchos Artículos. Puedes establecer $recursive con diferentes valores basados en la cantidad de datos quieres obtener con una llamada a $this->Grupo->find():
| Profundidad | Descripción |
|---|---|
| -1 | Cake obtiene sólo los datos de Grupo, no realiza uniones (joins). |
| 0 | Cake obtiene datos de Grupo y su Dominio |
| 1 | Cake obtiene un Grupo, su Dominio y sus Usuarios asociados |
| 2 | Cake obtiene un Grupo, su Dominio, sus Usuarios asociados y los Artículos asociados a los Usuarios |
No lo establezcas a un valor mayor de lo que necesites. Hacer que CakePHP obtenga datos que no vas a utilizar ralentiza tu aplicacióń innecesariamente.
Si deseas combinar $recursive con la funcionalidad de $fields, necesitarás añadir las columnas que contienen las claves foráneas necesarias al array fields manualmente. En el ejemplo de arriba, esto podría significar añadir domain_id.
3.7.8.7 order
El criterio de ordenación de datos por defecto para cualquier operación de búsqueda. Algunos valores posibles son:
$order = "campo"
$order = "Modelo.campo";
$order = "Modelo.campo asc";
$order = "Modelo.campo ASC";
$order = "Modelo.campo DESC";
$order = array("Modelo.campo" => "asc", "Modelo.campo2" => "DESC");
$order = "campo"$order = "Modelo.campo";$order = "Modelo.campo asc";$order = "Modelo.campo ASC";$order = "Modelo.campo DESC";$order = array("Modelo.campo" => "asc", "Modelo.campo2" => "DESC");
3.7.8.8 data
El contenedor para los datos del modelo que se han obtenido. A pesar de que los datos devueltos por una clase del modelo normalmente se utilizan como los devueltos por una llamada a find(), dentro de un callback del modelo necesitarás acceder a la información almacenadana a través de $data.
3.7.8.9 _schema
Contiene metadatos describiendo los campos de tabla de la base de datos del modelo. Cada campo es descrito por:
- nombre
- tipo (integer, string, datetime, etc.)
- null
- valor por defecto
- longitud
3.7.8.10 validate
Este atributo contiene reglas que permiten al modelo realizar decisiones de validación de datos antes de grabar. Las claves nombradas tras los campos contienen expresiones regulares permitiendo al modelo buscar correspondencias.
Para más información, mira el capítulo Validación de Datos más adelante en este manual.
3.7.8.11 name
Como habrás visto antes en este capítulo, el atributo $name es una característica de compatibilidad para los usuarios de PHP4 y se establece el valor al nombre del modelo.
Ejemplo de uso:
class Ejemplo extends AppModel {
var $name = 'Ejemplo';
} class Ejemplo extends AppModel {var $name = 'Ejemplo';}
3.7.8.12 cacheQueries
Si se establece a true, los datos obtenidos por el modelo durante una petición son cacheados (cached). Este cacheo es sólo en memoria, y dura sólo el tiempo de duración de la petición. Cualquier petición duplicada de los mismos datos es tratada por la caché.
