Benutzer-Werkzeuge

Webseiten-Werkzeuge


laravel:belongstomany

Dies ist eine alte Version des Dokuments!


Beispiel für die Tabellenbeziehung 1:n (belongsToMany)

In diesem Beispiel legen wir eine Tabelle Spielscheine und eine Tabelle Spielfelder an, wobei jedem Spielschein beliebig viele Spielfelder zugeordnet werden kann. Beim Anlegen ist die Reihenfolge wichtig: Zuerst den Spielschein, damit dieser bereits vorhanden ist wenn das Spielfeld auf auf den Spielschein referenziert.

Spielscheine

Migration für "Spielscheine" anlegen

php artisan make:migration create_spielscheine_table
    public function up()
    {
        Schema::create('spielscheine', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->enum( 'Spiel', array( 'Lotto', 'Eurojackpot', 'Keno', 'GlücksSpirale' ) );
            $table->string( 'Name', 50 );
            $table->string( 'Losnummer', 7 );
            $table->tinyInteger( 'Wochentage' );
            $table->boolean( 'Spiel_77' );
            $table->boolean( 'Super_6' );
            $table->boolean( 'GluecksSpirale' );
            $table->boolean( 'Plus_5' );
            $table->timestamps();
        });
    }

Model für "Spielschein" anlegen

php artisan make:model Spielschein

Spielfelder

Migration für "Spielfelder" anlegen

php artisan make:migration create_spielfelder_table
    public function up()
    {
        Schema::create('spielfelder', function (Blueprint $table) {
            $table->bigIncrements('id' );
            $table->bigInteger( 'spielschein_id' ) ->unsigned();
            $table->foreign( 'spielschein_id' ) -> references( 'id' ) -> on( 'spielscheine' ) -> onDelete( 'cascade' );
            $table->tinyInteger( 'Zahl_1' );
            $table->tinyInteger( 'Zahl_2' );
            $table->tinyInteger( 'Zahl_3' );
            $table->tinyInteger( 'Zahl_4' );
            $table->tinyInteger( 'Zahl_5' );
            $table->tinyInteger( 'Zahl_6' );
            $table->tinyInteger( 'Zahl_7' );
            $table->tinyInteger( 'Zahl_8' );
            $table->tinyInteger( 'Zahl_9' );
            $table->tinyInteger( 'Zahl_10' );
            $table->tinyInteger( 'Eurozahl_1' );
            $table->tinyInteger( 'Eurozahl_2' );
        });
    }

Wichtiger Hinweis: Die Spalte für den Fremdschlüssel muss vom gleichen Typ sein wie die Spalte in der Fremdtabelle: Wenn also die „id“ vom Typ „bigIncrement“ ist muss der Fremschlüssel vom Typ „bigInteger“ sein. Ist die „id“ hingegen vom Typ „increments“ muss der Fremdschlüssel mit „integer“ angegeben werden.

Weitere Erläuterungen zum Fremdschlüssel:

  • foreign = Fremdschlüssel zur Tabelle „spielscheine“, Tabellenspalte „id“ anlegen
  • references = Name der Tabellenspalte
  • on = Name der Tabelle
  • onDelete = Wenn der Spielschein geslöcht wird, werden automatisch auch alle zugehörigen Spielfelder gelöscht.

Model für "Spielfelder" anlegen

php artisan make:model Spielfeld
laravel/belongstomany.1568238872.txt.gz · Zuletzt geändert: 2019/09/11 23:54 von webproducer