3.7.8 Attributs des Modèles
Les attributs du Modèle vous permettent de définir des propriétés qui peuvent modifier son comportement par défaut.
Pour une liste complète des attributs du modèle, visitez l'API CakePHP : http://api.cakephp.org/1.2/class_model.html.
3.7.8.1 useDbConfig
La propriété useDbConfig spécifie quel paramètre du fichier de configuration de la base de données vous voulez utiliser. Le fichier de configuration de la base de données est stocké dans /app/config/database.php.
Exemple d'utilisation:
class Example extends AppModel {
var $useDbConfig = 'alternative';
} class Example extends AppModel {var $useDbConfig = 'alternative';}
La valeur par défaut de useDbConfig est 'default'.
3.7.8.2 useTable
La propriété useTable spécifie le nom de la table de la base de données. Par défaut, le modèle utilise le nom de la classe modèle au pluriel et en minuscule. Donnez à cet attribut le nom d’une table alternative, ou false
Exemple d'utilisation :
class Exemple extends AppModel {
var $useTable = false; // Ce modèle n'utilise pas de table de la base de données
} class Exemple extends AppModel {var $useTable = false; // Ce modèle n'utilise pas de table de la base de données}
Table alternative :
class Exemple extends AppModel {
var $useTable = 'exmp'; // Ce modèle utilise la table 'exmp'
} class Exemple extends AppModel {var $useTable = 'exmp'; // Ce modèle utilise la table 'exmp'}
3.7.8.3 tablePrefix
Le nom du préfixe de la table utilisée par le modèle. Initialement, le préfixe utilisé est celui renseigné avec la connexion à la base de données dans /app/config/database.php. Par défaut il n'y a aucun préfixe. Vous pouvez surcharger la valeur par défaut en configurant l'attribut tablePrefix dans le modèle.
Exemple d'utilisation :
class Exemple extends AppModel {
var $tablePrefix = 'alt_'; // cherchera la table 'alt_exemples'
} class Exemple extends AppModel {var $tablePrefix = 'alt_'; // cherchera la table 'alt_exemples'}
3.7.8.4 primaryKey
Chaque table a normalement une clé primaire, id. Vous pouvez changer le champ qui sera utilisé par le modèle comme sa clé primaire. Ceci est fréquent lorsque l'on configure CakePHP pour utiliser une table existant déjà dans la base de données.
Exemple d'utilisation :
class Exemple extends AppModel {
var $primaryKey = 'exemple_id'; // exemple_id est le nom du champ dans la base de données
} class Exemple extends AppModel {var $primaryKey = 'exemple_id'; // exemple_id est le nom du champ dans la base de données}
3.7.8.5 displayField
L'attribut displayField spécifie quel champ de la base de données doit être utilisé comme intitulé pour l'enregistrement. L'intitulé est utilisé dans le maquettage rapide (scaffolding) ainsi que dans les appels à find('list'). Le modèle utilisera name ou title par défaut.
Par exemple, pour utiliser le champ pseudo :
class Exemple extends AppModel {
var $displayField = 'pseudo';
} class Exemple extends AppModel {var $displayField = 'pseudo';}
Les noms de champs multiples ne peuvent pas être combinés en un unique champ à afficher. Par exemple, vous ne pouvez pas spécifier array('prenom', 'nom') comme le champ à afficher.
3.7.8.6 recursive
La propriété recursive définit la profondeur jusqu'à laquelle CakePHP doit récupérer les données des modèles associés, à l'intérieur des méthodes find() et findAll().
Imaginons que votre application représente des Groupes dans un domaine qui ont plusieurs Utilisateurs qui à leur tour ont plusieurs Articles. Vous pouvez attribuer à $recursive des valeurs différentes en fonction de la quantité de données que vous souhaitez récupérer en appelant $this->Groupe->find() :
| Profondeur | Description |
|---|---|
| -1 | Cake récupèrera seulement les données de Groupe, aucune jointure. |
| 0 | Cake récupèrera les données de Groupe ainsi que son domaine |
| 1 | Cake récupèrera un Groupe, son domaine et les Utilisateurs associés |
| 2 | Cake récupèrera un Groupe, son domaine, les Utilisateurs associés, et les Articles associés aux Utilisateurs |
En fixant une valeur supérieure à ce dont vous avez besoin, CakePHP récupérera des données que vous n’utiliserez jamais ce qui ralentira inutilement votre application.
Si vous voulez combiner $recursive avec la fonctionnalité fields, vous devrez ajouter manuellement les colonnes contenant les clés étrangères nécessaires dans le tableau fields. Dans l'exemple ci-dessus, cela pourrait être l'ajout de domaine_id
3.7.8.7 order
L’ordre par défaut des données lors des opérations find. Les valeurs possibles incluent :
$order = "champ"
$order = "Modele.champ";
$order = "Modele.champ asc";
$order = "Modele.champ ASC";
$order = "Modele.champ DESC";
$order = array("Modele.champ" => "asc", "Modele.champ2" => "DESC");
$order = "champ"$order = "Modele.champ";$order = "Modele.champ asc";$order = "Modele.champ ASC";$order = "Modele.champ DESC";$order = array("Modele.champ" => "asc", "Modele.champ2" => "DESC");
3.7.8.8 data
Le conteneur pour les données récupérées par le modèle. Bien que les données renvoyées depuis une classe de modèle sont en règle générale renvoyées par un appel à find(), vous pourriez avoir besoin d’accéder aux informations stockées dans $data à l’intérieur des callbacks du modèle.
3.7.8.9 _schema
Contient des méta-données décrivant les champs de la table de la base de données associée au modèle. Chaque champ est décrit par :
- nom
- type (integer, string, datetime, etc.)
- null
- valeur par défaut
- longueur
3.7.8.10 validate
Cet attribut rassemble les règles permettant au modèle de décider de la validité des données avant une sauvegarde. Les clés mentionnées après le champ contiennent des expressions régulières permettant au modèle d’essayer de faire des correspondances.
Pour plus d'informations concernant la validation, regardez le chapitre Validation des données plus loin dans ce manuel
3.7.8.11 name
Comme vu plus tôt dans ce chapitre, l'attribut name est une caractéristique pour la compatibilité avec PHP4, il est fixé à la même valeur que le nom du modèle.
Exemple d'utilisation :
class Exemple extends AppModel {
var $name = 'Exemple';
} class Exemple extends AppModel {var $name = 'Exemple';}
3.7.8.12 cacheQueries
Si il est mis à true, les données récupérées par le modèle lors d’une requête seule sont mises en cache. Cette mise en cache ne se fait qu’en mémoire et ne dure que le temps d’une requête. Ainsi, toutes les requêtes dupliquées pour les même données sont gérées par le cache.
