it-swarm.com.de

Datensätze in verknüpften Tabellen verwalten (manchmal als Pivot-Tabelle bezeichnet)

Ich entwickle meine erste Joomla-Komponente und es war sehr schwierig, eine angemessene Dokumentation zu finden. Daher habe ich die Kernkomponenten auf ihre Funktionsweise überprüft und versucht, dieselbe Methode in meiner Komponente anzuwenden.

Ich kann jedoch nicht finden, wie verwandte Tabellen gespeichert werden. Angenommen, ich habe drei Tabellen:

Benutzer

id, username, other_relevant_columns

Rollen

id, rolename, other_relevant_columns

UsersRoles

benutzer_id, rollen_id andere_relevante_spalten

Wenn ich einen neuen Benutzer erstelle, muss ich angeben, welche Rollen der Benutzer hat, und im Grunde habe ich keine Ahnung, wo ich diesen Code hinzufügen soll. Muss ich eine benutzerdefinierte Speichermethode erstellen, um dies zu erreichen? Woher?

Wie werden diese Informationen angezeigt? Ich möchte eine Gruppe von Kontrollkästchen mit allen Rollen anzeigen, die ein Benutzer haben kann, aber ich schätze, ich kann dies nicht mithilfe der XML-Datei zum Generieren von Formularen erreichen (da ich diese Werte aus der Datenbank laden und auch die Werte abrufen muss) um die Checkboxen zu aktivieren/deaktivieren)

PS: Denken Sie daran, dass dies nur Beispieltabellen sind. Ich implementiere keine Benutzerrollen-Funktionalität.

2
TJ is too short
  1. Ja, Sie benötigen eine benutzerdefinierte Speichermethode, um die Pivot-Tabellen zu verarbeiten. Wahrscheinlich auch bei einem Löschereignis, um Datensätze usw. zu entfernen.

  2. Benutzerdefinierte Formularfelder (die DB-bezogene Optionen verwenden können) sind ziemlich einfach. Das Dokument finden Sie hier: https://docs.joomla.org/Creating_a_custom_form_field_type

1
jamesgarrett

Wenn Sie Ihre Haupttabelle erstellen ("Benutzer" in Ihrem obigen Beispiel), benötigen Sie, wie in den Dokumenten " Erstellen Sie Ihre eigene Komponente " angegeben, ein entsprechendes Tabellenobjekt und ein entsprechendes Modellobjekt.

Durch die Erweiterung des richtigen Kernmodells erhalten Sie die Grundlagen für das, was Sie möchten.

Sie haben verknüpfte Tabellen, sodass Ihr "Haupt" -Modell nicht nur seine eigene Arbeit erledigen muss (Speichern, wie in dem von Ihnen angegebenen Beispiel), sondern auch die Untertabellen nach Bedarf bearbeiten muss, sodass Sie die Speichermethode überschreiben in diesem Hauptmodell.

Sie könnten die ganze Arbeit auch für die Untertabellen in den Hauptobjektmethoden erledigen, aber es wäre klüger, auch für die Untertabellen Tabellen- und Modellobjekte zu erstellen und deren relevante Methoden aus dem Hauptmodell auszulösen.

Wie James betont, möchten Sie wahrscheinlich dasselbe auch mit anderen Methoden tun: delete & tc

1
Markers