yakamara / yform

YForm für REDAXO 5 – Formulare im Frontend und Backend mit Verwaltung von Datenbank-Tabellen.
MIT License
77 stars 55 forks source link

rex_yform_manager_dataset verwenden - wie? #205

Closed alxndr-w closed 7 years ago

alxndr-w commented 7 years ago

Hallo allerseits,

ich habe gesehen, dass sich die Funktionen des Table Managers zum Bearbeiten neuer Datensätze auch direkt ansprechen lassen, bspw.:

<?php
 $var = rex_yform_manager_dataset::get(512,"rex_yf_employees");
 $var->setValue('name', "Mustermann");
 $var->save());
?>

Gibt es dazu Beispiele oder eine kurze Erklärung, wie man Datensätze sucht, hinzufügt, ändert oder löscht?

Für ein Projekt wäre es gerade wichtig, dass alle Änderungen (auch bspw. im Frontend) über den Table Manager ablaufen - und dann bspw. Felder wie datestamp automatisch aktualisiert werden, oder ein Datensatz in der History-Tabelle landet.

Erläuterungen zum Usecase kann ich gerne noch formulieren, falls notwendig.

gharlan commented 7 years ago

Ein bisschen was steht hier schon: https://github.com/yakamara/redaxo_yform_docs/blob/master/de_de/yorm.md

Insbesondere, wie man eigene Model-Klassen erstellen kann. Dann braucht man die Table nicht mehr angeben, und kann die Klasse um weitere Methoden ergänzen. Sobald man die Klasse registriert hat, bekommt man für die Datensätze der entsprechenden Tabelle immer Objekte der Model-Klasse, statt der Basis-dataset-Klasse.

Dein Beispiel oben wäre ja die Variante, einen Datensatz per ID abrufen, und ändern. Wichtig zu wissen ist, dass save() die Validierungen durchläuft, die im Manager hinterlegt wurden, und bei Fehlern das Speichern ablehnt.

Neue Datensätze erzeugt man mit rex_yform_manager_dataset::create($table), und ab da dann genauso wie beim Ändern von Datensätzen.

Löschen geht per ->delete().

Datensätze finden: rex_yform_manager_dataset::query($table) liefert ein Objekt der Query-Klasse, die bietet verschiedene Methoden, um die Abfrage zusammen zu stellen (where() etc.).

Mit findOne() oder findId() bekommt man einen einzelnen Datensatz, mit find() eine Collection. Die kann man wie ein Array mit foreach durchlaufen, und sie bietet auch Methoden, um die Collection (alle Datensätze) gemeinsam zu bearbeiten (setValue, save, delete).

Zwei Beispiele zur Nutzung der Query-Klasse sind auch in der Doku.

dergel commented 7 years ago

@alexplusde es wäre ein Traum (zumindest für mich ;) ), wenn du das in der Doku ergänzen könntest

alxndr-w commented 7 years ago

Mein Traum wäre es, wenn ich das alles auf Anhieb verstehen würde @dergel :D

Ich werde also Fragen stellen und dann gerne die Beispiele dazu dokumentieren.