Models: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Psi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{stub}} Category:Dev_HOWTOS Category:Development {{AppliesTo|Version=3.0.0}} '''''Models von Contao3 nutzen und verstehen''''' = Was sind Models = Ein …“) |
Psi (Diskussion | Beiträge) (→Relationen / Datensätze aus Fremndtabellen) |
||
Zeile 59: | Zeile 59: | ||
'relation' => array('type'=>'hasOne', 'load'=>'eager') | 'relation' => array('type'=>'hasOne', 'load'=>'eager') | ||
), | ), | ||
+ | </source> | ||
+ | |||
+ | <source lang="php"> | ||
+ | $GLOBALS['TL_MODELS']['tl_article'] = 'Contao\ArticleModel'; | ||
</source> | </source> | ||
Version vom 16. Februar 2013, 02:12 Uhr
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
betrifft | |
---|---|
Contao Version | 3.0.0 |
Models von Contao3 nutzen und verstehen
Inhaltsverzeichnis
Was sind Models
Ein Model ist die Objekt-Repräsentation einer Datebank-Tabelle, genauer gesagt einer Entität daraus. Models ersetzen weitgehend SQL-Statements und wrappen diese in bequeme Methoden. Natürlich bieten Models noch viele weitere Vorteile.
Mehrere Models werden durch eine Collection referenziert, dies entspricht einer SQL-Abfrage die mehr als eine Ergebniszeile liefert.
Contao3 bietet - wenn dem Model eine DCA-Struktur zugeordnet ist - etwas Magic um abhängige Datensätze zu laden. Beispiel: Der Author (UserModel) eines Artikels (ArticleModel).
Verwendung
TODO write something cool
Relationen / Datensätze aus Fremndtabellen
Für die Funktion der relations-Magic muss dem Model ein DCA-Definition zugeordnet sein. Diese wird bei der Definition der Model-Klasse angegeben:
class ArticleModel extends \Model { /** * Table name * @var string */ protected static $strTable = 'tl_article'; ...
In der DCA-Struktur wird die Relation definiert
Angenommen wir haben ein Model das einen Datensatz aus tl_article referenziert.
$GLOBALS['TL_DCA']['tl_article'] = array ( ... // Fields 'fields' => array ( 'pid' => array ( 'foreignKey' => 'tl_page.title', 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type'=>'belongsTo', 'load'=>'lazy') ), 'author' => array ( 'label' => &$GLOBALS['TL_LANG']['tl_article']['author'], 'default' => $this->User->id, 'exclude' => true, 'inputType' => 'select', 'foreignKey' => 'tl_user.name', 'eval' => array('doNotCopy'=>true, 'mandatory'=>true, 'chosen'=>true, 'includeBlankOption'=>true, 'tl_class'=>'w50'), 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type'=>'hasOne', 'load'=>'eager') ),
$GLOBALS['TL_MODELS']['tl_article'] = 'Contao\ArticleModel';