[[webdev:php:zend:notizen-model]]

Zend Framework 1.12.3 Model Notiz

Die Quickstart-Anleitung zur Erstellung eines Models für Datenbankoperationen ist ziemlich overdose für Einsteiger die noch nicht mit einem MVC-Orientierten Modell a la Zend gearbeitet haben. Diese Notiz ist extrem schmal gehalten für ein schnelles Erfolgserlebnis.

Die Tabelle hat folgende Struktur:

CREATE TABLE 'artikel' 
(
 'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
 'titel' TEXT, 
 'content' TEXT, 
 'datum' INTEGER
)

application.ini Adapter Settings

Hier wird eine SQLITE Datenbank der einfachheit halber benutzt. In der applicationen.ini fügt man hinzu:

resources.db.adapter = "PDO_SQLITE"
resources.db.params.dbname = APPLICATION_PATH "/../data/db/blog.db"
;resources.db.isDefaultTableAdapter = true

Entweder fügt man es händisch ein oder greift zur Kommandozeile mit zf:

$ zf configure db-adapter 'adapter=PDO_SQLITE&dbname=APPLICATION_PATH "/../data/db/blog.db"'

Model erstellen

Es Wird ein Model für eine Bloganwendung erstellt. Wichtig ist, die Initialisierung nicht zu vergessen (der Konstruktoraufruf construct ersetzt sie nicht) um Fehlermeldungen der Art Argument 1 passed to Zend_Db_Select::construct() must be an instance of Zend_Db_Adapter_Abstract, null given.. zu vermeiden. Um Datenbank-Aktionen durchzuführen muss das Model von DB_Table_Abstract erben. Der Tabellenname ist anzugeben $_name. Das Model stellt die Methode getAllRows zur Abfrage von Datensätzen bereit und greift dazu auf Methoden von Zend_DB_Table_Abstract zu:

<?php
 
class Application_Model_Blog extends Zend_Db_Table_Abstract{
 
    // tabelle
    protected $_name = 'artikel';
 
    function init(){
        // muss!
    }
 
 
    function getAllRows(){
        $s = $this->select();
        $query = $s->from($this,array('content','datum','id','titel'));
        return $this->fetchAll($query);
 
    }
 
}

mit zf:

$ zf create model Blog

Controller

Nun kann im Controller die ANfrage ausgeführt und die Daten der View übergeben werden:

<?php
 
class IndexController extends Zend_Controller_Action{
 
    public function init(){
        /* Initialize action controller here */
    }
 
    public function indexAction(){
        $artikel = new Application_Model_Blog();
        $this->view->entries = $artikel->getAllRows();        
    }
 
}

Dateistruktur

.
|-- .zfproject.xml
|-- README.txt
|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   |   |-- Blog.php
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- data
|   `-- db
|       `-- blog.db
|-- docs
|   `-- README.txt
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
    |-- application
    |   `-- controllers
    |       `-- IndexControllerTest.php
    |-- bootstrap.php
    |-- library
    `-- phpunit.xml

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • webdev/php/zend/notizen-model.txt
  • Zuletzt geändert: 2014/01/28 13:09
  • (Externe Bearbeitung)