S'initier au Zend Framework/Mini blog/Modèle
Création dans la base de données
modifierExemple 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
modifierZF 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.
Sinon, on peut créer un modèle à l'aide de Zend Tool à la racine du projet faire
zf create db-table Nouvelle nouvelle
Ce qui va créer un fichier Nouvelle.php placé dans l’arborescence application\models\DbTable contenant :
<?php
class Application_Model_DbTable_Nouvelle extends Zend_Db_Table_Abstract
{
protected $_name = 'nouvelle';
}
Notes
modifier- ↑ A single instance that handles the business logic for all rows in a database table or view. http://martinfowler.com/eaaCatalog/tableModule.html