This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/kohana/modules/userguide/guide/fr-fr/tutorials.orm.md
2011-05-03 09:49:01 +10:00

121 lines
4.4 KiB
Markdown

# ORM {#top}
Kohana 3.0 inclus un module [ORM](http://en.wikipedia.org/wiki/Object-relational_mapping) puissant utilisant le pattern active record et l'introspection de base de données pour déterminer les informations sur les colonnes d'un modèle.
Bien que le module ORM soit inclus par défaut dans vos installations de Kohana 3.0, il est désactivé par défaut. Pour l'activer modifiez le fichier `application/bootstrap.php` et ajoutez à l'appel [Kohana::modules] le module ORM:
Kohana::modules(array(
...
'orm' => MODPATH.'orm',
...
));
## Configuration {#configuration}
Pour pouvoir utiliser l'ORM, il faut tout d'abord faire hériter vos modèles de la classe ORM comme suit:
class Model_User extends ORM
{
...
}
Dans l'exemple ci-dessus, le modele cherchera une table `users` dans la base de données par défaut.
### Propriétés d'un modèle ORM
Les propriétés suivantes peuvent être utilisées pour configurer chacuns de vos modèles:
Type | Option | Description | Valeur par défaut
----------|-----------------|--------------------------------------| -------------------------
`string` | _table_name | Nom de la table |
`string` | _db | Nom de la base de données |`default`
`string` | _primary_key | Colonne contenant la clé primaire |`id`
`string` | _primary_val | Colonne contenant la valeur primaire |`name`
## Utiliser l'ORM
### Charger un enregistrement
Pour créér une instance d'un modèle, il faut utiliser la méthode [ORM::factory] ou passer directement par le constructeur:
$user = ORM::factory('user');
// ou
$user = new Model_User();
Les 2 méthodes ci-dessus peuvent prendre en argument la valeur de la clé primaire de l'élément que l'on souhaite charger:
// Charge l'utilisateur d'ID 5
$user = ORM::factory('user', 5);
[ORM::loaded] permet de savoir si un modèle donné a été chargé avec succès.
### Rechercher un enregistrement
L'ORM supporte la plupart des méthodes [Base de données](tutorials.databases) pour affiner les recherches sur les données du modèle. Pour avoir une liste complète, référez vous à la propriété `_db_methods`. Les enregistrements sont récupérés lors de l'appel à [ORM::find] ou [ORM::find_all].
// Le code ci-dessous récupère le premier utilisateur actif prénommé Bob
$user = ORM::factory('user')
->where('active', '=', TRUE)
->where('name', '=', 'Bob')
->find();
// Le code ci-dessous récupère tous les utilisateur actifs Bob
$users = ORM::factory('user')
...
->find_all();
Lors de la récupération d'une liste de modèles par la méthode [ORM::find_all], le parcours des éléments se fait comme pour les résultats de base de données:
foreach ($users as $user)
{
...
}
### Accès aux propriétés d'un Modèle
Toutes les propriétés d'un modèle sont accessibles en utilisant les méthodes magiques `__get` et `__set`.
$user = ORM::factory('user', 5);
// Affiche le nom de l'utilisateur
echo $user->name;
// Change le nom de l'utilisateur
$user->name = 'Bob';
Pour stocker des informations/propriétés qui n'ont pas de correspondances dans la table (c'est-à-dire aucune colonnes du même nom que la propriété), il faut utiliser la propriété `_ignored_columns`:
class Model_User extends ORM
{
...
protected $_ignored_columns = array('field1', 'field2', ...)
...
}
### Créér et sauvegarder des enregistrements
La méthode [ORM::save] est utilisée aussi bien pour créer et sauvegarder de nouveaux enregistrements que pour mettre à jour des enregistrements existants.
// Création d'un enregistrement
$user = ORM::factory('user');
$user->name = 'New user';
$user->save();
// Mise à jour d'un enregistrement
$user = ORM::factory('user', 5);
$user->name = 'User 2';
$user->save();
Vous pouvez mettre à jour plusieurs enregistrements à la fois en utilisant la méthode [ORM::save_all]:
$user = ORM::factory('user');
$user->name = 'Bob';
// Change le nom de tous les utilisateurs actifs à Bob
$user->where('active', '=', TRUE)->save_all();
[ORM::saved] permet de vérifier si le modèle a bien été sauvegardé.
### Supprimer des enregistrements
La suppression d'enregistrements se fait avec [ORM::delete] et [ORM::delet_all]. Ces méthodes fonctionnement de manière similaire à celles de sauvegarde détaillées plus haut à l'exception du fait que [ORM::delete] peut prendre en argument l'`id` de l'enregistrment à supprimer.