S'initier au Zend Framework/Mini blog/Modèle
Un livre de Wikibooks.
[modifier] 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
[modifier] 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.
[modifier] Notes
- ↑ A single instance that handles the business logic for all rows in a database table or view. http://martinfowler.com/eaaCatalog/tableModule.html
