Attribution

Guite edited this page Nov 12, 2014 · 2 revisions

Attribution

Datenbank-Objekte können von Zikula verwaltete Attribute haben. Diese Attribute können den Objekten dann auch von anderen Modulen zugewiesen werden:

Beispiel

Stell Dir vor, Du hast ein Modul, das in einer Tabelle Autos verwaltet. Die Felder beschreiben das Auto in Farbe, Baujahr, PS-Zahl. Nun will ein anderes Modul, das zum Beispiel Personen mit Adressen verwaltet, speichern, welche Person gerade welches Auto gemietet hat. In diesem Fall hast Du eine Auto-Tabelle im Auto-Modul und eine Personen-Tabelle im Personen-Modul. Du kannst nun der Person ein Attribut zuweisen - zum Beispiel die ID eines Autos. Und das geht so:

Vorbereitung

Folgender Eintrag muss in der pntables.php stehen, so dass die Attribute aktiviert sind, sobald das Modul installiert oder aktualisiert wird:

#php
<?php
// Attribute werden für die Tabelle "examples" aktiviert:
$pntable['examples_db_extra_enable_attribution'] = true;

// Dazu muss vor allem auch ein Primärschlüssel auf ein Feld in dieser Tabelle gesetzt werden:
$pntable['examples_primary_key_column'] = 'exampleid';

So viel dazu. Mehr ist das nicht. Du kannst jetzt mit Attributen arbeiten

Attribute lesen

Die Attribute holst Du automatisch zusammen mit dem eigentlichen Objekt aus der Datenbank:

#php
<?php
$example = DBUtil::selectObjectByID('example', $exampleid, 'exampleid', null, null, null, false);

Attribute schreiben

Um Attribute zu schreiben, musst Du meherer Schritte durchlaufen:

#php
<?php
// 1. Objekt holen (siehe oben)
$example = DBUtil::selectObjectByID('example', $exampleid, 'exampleid', null, null, null, false);

// 2. Attribut setzen / überschreiben
$example['<u>ATTRIBUTES</u>']['attributename'] = 'attributevalue';

// 3. Objekt speichern zusammen mit den neuen Attributen
DBUtil::updateObject($example, 'example', '', 'exampleid');
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.