Vue d'ensemble des tables de la base de données
Accès BDD
Utilisation des models et des collections
Fichier de configuration
Les informations de connexion sont dans
/app/etc/local.xmlCe fichier ne doit pas être commité.
La connexion par défaut à MySQL se situe dans le noeud config > global > resources > default_setup > connection :
<?xml version="1.0"?>
<config>
<global>
<!-- (...) -->
<resources>
<!-- (...) -->
<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[magento]]></username>
<password><![CDATA[magento]]></password>
<dbname><![CDATA[magento]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>
<!-- (...) -->
</global>
<!-- (...) -->
</config>
Le chemin d'accès à l'administration :
<config>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[custom_admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>
Sauvegarder les sessions utilisateurs sur le disque ou en BDD
<config>
<global>
<session_save><![CDATA[db]]></session_save> <!-- files|db -->
</global>
</config>
Dans ce fichier, il est possible de configurer ces sessions pour les utiliser dans REDIS, voir le passage commenté sur Magento 1.9.*
Utilisation des models et des collections
Nous n'utilisons pas directement la BDD. Nous passons par les modèles déjà mis en place. L'ORM de Magento est très puissant.
Lecture d'un item
// Chargement
$object = Mage::getModel('module/object')->load($id);
// Afficher un champ
echo $object->getName();
// Affichage de tous les attributs/champs de notre objet
Mage::log($object->getData());
Le module et le model sont recherchés dans :
app/code/[core|community|local]/*/Module/Model/Object.php
Ainsi catalog/product peut dire app/code/core/Magento/Catalog/[Model|Block|Helper]/Product.php.
Mais il pourrait très bien aussi dire `app/code/local/MyCompany/Catalog/[Model|Block|Helper]/Product.php.
Faites donc attention au nom de votre Namespace.
Requêtes SQL
La syntaxe des requêtes SQL se basent sur Zend Framework.
Il faut utiliser l'ORM de Magento.
Cependant, certaines mécaniques comme les JOIN ou autre HAVING n'existent pas dans l'ORM.
Vu que la requête est un objet Zend Db, il est tout à fait possible de se baser dessus.
Exemple Jointure :
$collection->getSelect()->joinLeft(
// Quelle table sur la jointure
array('customer_addess_table' => $tableName),
// Condition de jointure
'customer_addess_table.parent_id = main_table.customer_id AND column1 = column2',
// Selection des champs de la table 2. Array avec une valeur vide équivaut à un SELECT *
array('')
);
Exemple Having :
$collection->getSelect()->having($_cond);
Documentation Zend: http://framework.zend.com/manual/en/zend.db.select.html
Resource blog :
Formation Magento Developpeur
Magento 1.X