In diesem Teil unserer Extension Tutorials geht es darum, wie man eigene Datenbank-Tabellen definiert und in seine Erweiterung integriert.

1. Als erstes müssen wir unsere Dateistruktur anpassen

app/
   etc/
      modules/
        - Mxperts_All.xml (Oder Ihre Firmenname IhreFirme_All.xml)
   code/
      local/
         Mxperts/ (Oder Ihre Firmenname IhreFirme_All.xml)
            Tutorial/ (Bezeichnung Ihrer Erweiterung)
               Block/
                 - Index.php
               controllers/
                 - AdminController.php
                 - IndexController.php
               etc/
                 - config.xml
               Helper/
                 - Data.php
               sql/
                 tutorial_setup/
                    - mysql4-install-0.2.0.php
                    - mysql4-upgrade-0.1.0-0.2.0.php


Erklärung:
Im Verzeichnis app\code\local\Mxperts\Tutorial\sql\tutorial_setup werden die Dateien zur Defintion der SQL-statements hinterlegt.

2. Anpassen der config.xml

<?xml version="1.0"?>
<config>

    <modules>
        <Mxperts_Tutorial>
            <version>0.2.0</version>
        </Mxperts_Tutorial>
    </modules>

    <global>
         <helpers>
            <tutorial><class>Mxperts_Tutorial_Helper</class></tutorial>
        </helpers>
        <blocks>
            <tutorial>
                <class>Mxperts_Tutorial_Block</class>
            </tutorial>
        </blocks>
        <resources>
            <tutorial_setup>
                <setup>
                    <module>Mxperts_Tutorial</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </tutorial_setup>
            <tutorial_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </tutorial_write>
            <tutorial_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </tutorial_read>
        </resources>

    </global>

    <adminhtml>
        <menu>
            <tutorial translate="title" module="tutorial">
                <title>Tutorial</title>
                <sort_order>100</sort_order>
                <action>tutorial/admin</action>
            </tutorial>
        </menu>
    </adminhtml>

    <frontend>
        <routers>
            <Mxperts_Tutorial>
                <use>standard</use>
                <args>
                    <module>Mxperts_Tutorial</module>
                    <frontName>tutorial</frontName>
                </args>
            </Mxperts_Tutorial>
        </routers>
    </frontend>

</config>

Erklärung:
Wir haben den Abschnitt <routers> hinzugefügt. Dier Versionsnummer wurde erhöht auf Version 0.2.0 Magento erkennt die Versionsänderung der Erweiterung und führt das Installationscript automatisch aus.

3. Defintion unserer Tabelle

Unser Installationsscript für die Datenbank erstellen wir in der Datei mysql4-upgrade-0.1.0-0.2.0.php udn in der Datei mysql4-install-0.2.0.php. Wir benötigen die Datei mysql4-upgrade-0.1.0-0.2.0.php nur für das einmalige Update. Wenn Sie später Ihre Erweiterung von Anfang an mit den Datenbank-Defintionen ausliefern müssen Sie Updatescripts nur erstellen, falls es Änderungen in den Tabellen gibt.

<?php
$installer = $this;
$installer->startSetup();

$installer->run("
CREATE TABLE {$this->getTable('tutorial')} (
  `tutorial_id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(250) NOT NULL default '',
  `tags` varchar(250) default NULL,
  `summary` text,
  PRIMARY KEY  (`tutorial_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  ");

$installer->endSetup();

Um die Tabelle in Magento zu integrieren gehen Sie in Ihr Magento Backend. Gehen Sie auf System->Konfiguration->Erweitert und klicken Sie auf speichern. Aktualisieren Sie zur Sicherheit noch den Cache.
Prüfen Sie nun mit einem SQL-Client oder phpMyAdmin nach, ob Ihre Tabelle vorhanden ist. Wenn ja, dann können Sie die Datei mysql4-upgrade-0.1.0-0.2.0.php nun löschen.

Extensions Tutorial: Teil2 – “Admin-Controler”
Extensions Tutorial: Teil 4 – Model