Magento Database

Da Andreabont's Wiki.

Aggiungere una tabella ad un modulo

Prima di tutto dobbiamo creare un nuovo model per la risorsa:

-Miomodulo/
	-Block/
	-controllers/
	-Model/
		-Resource/
			-Miomodel/
				-Collection.php
			-Miomodel.php
		-Miomodel.php
	-etc/
		-config.xml
	-sql/

Nel file config.xml definire la risorsa miomodulo_resource:

<models>
   <miomodel_resource>
      <class>[prefisso]_Miomodulo_Model_Resource</class>
      <entities>
         <miatabella>
            <table>[nome_tabella_nel_database]</table>
         </miatabella>
      </entities>
   </miomodel_resource>
</models>

(Opzionale) Per tutte le sottotabelle, su cui per esempio si vuole eseguire una join, aggiungere sotto entities:

<nometabella>
   <table>[nome_tabella_nel_database]</table>
</nometabella>

Nel file config.xml aggiungere al model una nuova risorsa miomodulo_resource:

<models>
   <miomodel>
      <class>[prefisso]_Miomodulo_Model</class>
      <resourceModel>miomodel_resource</resourceModel>
   </miomodel>
</models>

Creare Miomodulo/Model/Miomodel.php con dentro:

class [prefisso]_Miomodulo_Model_Miomodel extends Mage_Core_Model_Abstract
{
    protected function _construct()
    {
        $this->_init('miomodel/miatabella');
    }
}

Creare Miomodulo/Model/Resource/Miomodel.php con dentro:

class [prefisso]_Miomodulo_Model_Resource_Miomodel extends Mage_Core_Model_Resource_Db_Abstract
{
    protected function _construct()
    {
        $this->_init('miomodel/miatabella', 'chiave_primaria_della_tabella');
    }
}

Creare Miomodulo/Model/Resource/Miomodel/Collection.php con dentro:

class [prefisso]_Miomodulo_Model_Resource_Miomodel_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
{
    protected function _construct()
    {
            $this->_init('miomodel/miatabella');
    }
}

Ora è possibile usare richiamare una collection in questo modo:

$collections = Mage::getModel('miomodel/miatabella')->getCollection();