6.Le langage PHP
6.15.Utilisation de bases de données avec PHP
6.15.6.Association Objet-Relationnel (ORM) avec Doctrine
6.15.6.6.Création de la table associée à l'objet
6.15.6.6.1.Introduction
Avant d'envisager l'enregistrement d'un objet dans une table il faut créer cette table.
Il est évidemment possible de créer cette table manuellement mais il peut être avantageux de créer cette table en utilisant Doctrine.
Pour créer la table avec Doctrine, on peut envisager 2 solutions:
- En décrivant "manuellement" la table a créer
- En s'appuyant sur la classe Utilisateur précédemment créée
|
6.15.6.6.2.Manuellement
Pour cela, il faut créer un tableau décrivant la table, comme dans le code suivant
<?php
include_once('include_path_inc.php5');
require_once('Doctrine.php');
$base = 'sqlite://doctrine.sqlite';
spl_autoload_register(array('Doctrine', 'autoload'));
$bd = Doctrine_Manager::connection($base);
$tableUtilisateurs = array(
'id' => array(
'type' => 'integer',
'primary' => true,
'autoincrement' => true),
'nom' => array(
'type' => 'string',
'length' => 255)
);
try {
$bd->export->createTable('utilisateurs', $tableUtilisateurs);
} catch (Doctrine_Connection_Exception $e) {
echo $e->getPortableCode()." ".$e->getPortableMessage()."<br />\n";
}
?>
6.15.6.6.3.A partir de la classe Doctrine_Record
Puisque la table a déjà été déclarée dans la classe
UtilisateurDoctrine autant l'utiliser pour créer une table cohérente avec cette définition
<?php
include_once('include_path_inc.php5');
require_once('Doctrine.php');
$base = 'sqlite://doctrine.sqlite';
spl_autoload_register(array('Doctrine', 'autoload'));
$bd = Doctrine_Manager::connection($base);
require_once('Utilisateur_class.php5');
$utilisateur = new Utilisateur();
try {
$table = $utilisateur->getTable();
$bd->export->createTable($table->getTableName(),
$table->getColumns());
} catch (Doctrine_Connection_Exception $e) {
echo $e->getPortableCode()." ".$e->getPortableMessage()."<br />\n";
}
?>