Models

Aus Contao Community Documentation

MsgError.png 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

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';

Weiterführende Informationen

Ansichten
Meine Werkzeuge

Contao Community Documentation

Chuck Norris würde Contao 3 in einer Stunde ganz neu schreiben, wobei er die ersten 50 Minuten Sex mit 3 Blondinen hätte.

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge