Verständnisfrage eigene Entities DAL

Hallo,

ich möchte anhand eines konkreten Beispiels Entities anlegen mit dem neuen DAL. Soweit wie ich das verstanden habe, braucht man dafür 4 Klassen pro Entity:

  • EntityDefintion
  • EntityCollection
  • Eine Klasse für die Schlüssel (Primär- und Fremdschlüssel)
  • Entity
  • und evtl. Extension wenn man was mit vorhandenen Entities machen will

Außerdem muss man jeweils noch die Definition und die Extension als Service definieren mit den jeweiligen Tags, damit es Shopware aufsammeln und finden kann.

Mein Beispiel ist ein Kalender Plugin mit eigenen Rollenrechten (eigene Tabellendefinition, also nichts aus dem Rechtesysten von Shopware). Dementsprechend braucht es 4 Tabellen, wewnn man nach der 3. Normalform geht.
Das Plugin habe ich mithilfe dieses Guides aufgebaut: https://docs.shopware.com/en/shopware-platform-dev-en/getting-started/indepth-guide-bundle/entity?category=shopware-platform-dev-en/getting-started/indepth-guide-bundle

Meine Fragen hierzu wären:

  1. In meinem Beispiel habe ich an den Core gehalten, das heißt ich habe für die Primär- und Fremdschlüssel keine extra Klasse gemacht, das befindet sich mit in der FieldDefintion von EntityDefinition. Ist das so auch in Ordnung?
  2. Wie in dem Guide gezeigt, braucht man um Produkt zu ergänzen eine EntityExtension Ableitung, um den Fremdschlüssel jeweils zuzuweisen. Nachdem man das hier machen muss, gehe ich mal davon aus, dass so etwas auch in die FieldDefinition meiner Entities auf der Seite der referenzierten Tabelle mit sein muss? Also beispielsweise müsste bei ws_calendar_groups eine Assocotian zu ws_calendar_group_roles sein. Also sozusagen von dem id Feld der eigenen Tabelle auf das Fremdschlüsselfeld der anderen Tabelle.
  3. Habe ich sonst noch irgendwas übersehen oder vergessen? Ich möchte im Prinzip lauffähige Entities haben, die sich in der Datenbank anlegen können und mit denen man arbeiten kann im Plugin.

Der Übersicht halber habe ich mein Beispiel komplett als (hoffentlich) lauffähiges Plugin auf GitHub gestellt: GitHub - alpham8/calendar-example: Shopware Plugin Example

Ich bedanke mich schonmal für eure Hilfe :slight_smile:

It’s a long way to the top of Shopware 6 und so… :wink:

 

Schönen Gruß,

derwunner