54 Nachrichten unter 19 Themen von 27 Mitgliedern
[SilverStripe Roadmap][Changelog]

Dringend Hilfe gesucht... Has_one, has_many, verknüpfung zweier DataObjects?

Seite: 1 971 mal gelesen
  • ID73
    ID73 Community Member
    3 Beiträge

    Dringend Hilfe gesucht... Has_one, has_many, verknüpfung zweier DataObjects?

    Hi Leute,

    ich habe ein gedankliches Problem mit meinen DataObjects. Ich habs noch nicht hundertpro durchdrungen.

    Ich will eine XML-Struktur in SilverStripe importieren. Jedes Kapitel soll ein Datenbankfeld sein (mit XML als Text, für spätere verarbeitung.

    Die Struktur sieht so aus:
    <node class="Project>
       <node class="Kapiteltyp_xx">
          <node class="Kapiteltyp_xx>
             <node class="Kapiteltyp_xx>
                <node class="Kapiteltyp_xx>
                Bei der vierten Inhaltsverzeichniseben ist schluss! Tiefere <node> werden einfach angehängt.
                </node>
             </node>
          </node>
       </node>
    </node>

    Es kann natürlich viele <node> mit vielen unterelementen geben. class=Project gibts aber nur einmal. Das ist der hauptknoten.

    Ich habe mir das hier erarbeitet mit Hilfe anderer SilverStriper:

    Class Project extends DataObejct {
       static $has_many = array(
          'MainChapter' => 'Chapter
          'Subchapters' => 'Chapter'
       );
       public static $db = array(      
                   "node" => "Varchar",
                   "projtitle" => "Varchar",
                   "language" => "Varchar",
                   "menuereihenfolge" => "Int",
                   "published" => "Boolean",
                   "nodexml" => "Text",
                   "nodehtml" => "HTMLText",
       );
    }

    Class Chapter extends DataObejct {
       static $has_one = array(
          'Project' => 'Project',
          'MainChapter' => 'Chapter'
       );
       static $has_many = array (
          'Subchapters' => 'Chapter'
       );
       public static $db = array(   
                   "node" => "Varchar"
                   "chaptitle" => "Varchar",
                   "toclevel" => "Int",
                   "nodexml" => "Text",
                   "nodehtml" => "HTMLText",
       );
    }


    So weit so gut.

    Ich begreife immernoch nicht, wie ich jetzt die Baumstruktur aufbauen kann.

    In mein Project lese ich quasi nur den Handbuchnamen, ein paar Metadaten und die Titelseite ein.
    Alle anderen <nodes> sind Kapitel und Unterkapitel vom Project-Knoten.

    Was muss ich tun, wenn ich z.b. ein Hauptkapitel anlege, das ich Project unterordnen möchte?

    Was muss ich tun, wenn ich ein Subchapter anlegen will, das ich einem MainChapter unterordnen möchte?

    Was muss ich tun um ein Unterkapitel eines Unterkapitels eines Unterkapitels eines Hauptkapitels anzulegen? (Max. 4 Inhaltsverzeichnisebenen werden abgebildet!)

    Ich verstehe einfach nicht, wie die Beziehungen zustande kommen, damit ich die Kapitel einzeln in der Datenbank habe, aber die Baumstruktur jederzeit generierbar ist und man immer genau weiß welches Kapitel wo hin gehört.

    Ich hoffe ihr versteht meine Unklarheit, bin leider kein Experte. Die Planung einer SilverStripe-Komponente ist Thema meiner Bachelorthesis. Ich erarbeite und plane alles, und gebe für zentrale Stellen Codebeispiele.

    Danke im Voraus!

    Grüße,
    Matze

    Nachtrag: Ich verstehe auch nicht was in der Datenbank passiert. Habe die Klassen in SilverStripe angelegt und kompiliert. läuft durch, aber erzeugt keine Datenbanktabellen! Ich weiß nicht wieso. Baue ich Fehler ein erkennt das der Environmentbuilder... aber meine Tabellen legt er nicht an.

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: RufusCoili