S'initier au Zend Framework/Mini blog/Modèle
De Bricosoft.
Création dans la base de données
Exemple de création de base de données MySQL :
CREATE USER 'monblog'@'localhost' IDENTIFIED BY 'monblog'; GRANT USAGE ON *.* TO 'monblog'@'localhost' IDENTIFIED BY 'monblog'; CREATE DATABASE IF NOT EXISTS `monblog` ; GRANT ALL PRIVILEGES ON monblog.* TO 'monblog'@'localhost';
Exemple de création de table :
CREATE TABLE nouvelle ( id INT NOT NULL AUTO_INCREMENT, titre VARCHAR(200), corps TEXT, categorie_id INT, heuredate DATETIME, PRIMARY KEY (id) );
La table étant créée il nous faut configurer l'application pour pouvoir y accéder.
Voici, un exemple de configuration pour accéder à la base, il est aussi possible de centraliser la configuration dans un fichier séparé (XML, ini, etc).
Placez les paramètres de connexion dans la fonction initDb() de l'initialiseur du bootstrap (application/Bootstrap.php) :
/** * Initialize data bases * * @return void */ public function initDb() { $params= array ( 'host' => '127.0.0.1', 'username' => 'monblog', 'password' => 'monblog', 'dbname' => 'monblog'); try { $db= Zend_Db::factory('PDO_MYSQL', $params); Zend_Db_Table::setDefaultAdapter ( $db ); } catch ( Exception $e ) { exit ( $e->getMessage () ); } Zend_Registry::set ( 'dbAdapter', $db ); // accessible partout }
Il est aussi possible de spécifier les paramètres de base de données dans le fichier application/configs/application.ini
Le modèle
ZF a choisit par défaut la correspondance objet-SQL vers Table[1](voir aussi : ORM), c'est à dire qu'une table SQL est un objet Zend_Db_Table, une ligne est Zend_Db_Table_Row et plusieurs lignes Zend_Db_Table_Rowset.
Pour ajouter cet objet placez vous dans le dossier application/default/models, puis créez le fichier Nouvelle.php - n'oubliez pas la majuscule - (avec Zend Studio cela se fait par : bouton-droit New/Zend Framework Item/Zend Table) :
class Nouvelle extends Zend_Db_Table_Abstract { protected $_name = 'nouvelle'; }
Le framework va interroger la base pour connaître les méta-informations associées à la table et de ce fait il va trouver 'id' dans le cas de cette table mais on peut la spécifier avec $_primary.
Le modèle créé, nous allons le charger dans son contrôleur et ensuite des actions.
Notes
- ↑ A single instance that handles the business logic for all rows in a database table or view. http://martinfowler.com/eaaCatalog/tableModule.html


