Benutzer-Werkzeuge

Webseiten-Werkzeuge


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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
webdev/php/zend/notizen-model.txt · Zuletzt geändert: 2014/01/28 13:09 (Externe Bearbeitung)

hello, world