Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung Letzte Überarbeitung Both sides next revision | ||
laravel:belongstomany [2019/09/11 23:54] webproducer angelegt |
laravel:belongstomany [2019/09/15 10:34] webproducer Link zu Teil 2 ergänzt |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Beispiel für die Tabellenbeziehung 1:n (belongsToMany) ====== | + | ====== Beispiel für die Tabellenbeziehung 1:n (hasMany) ====== |
In diesem Beispiel legen wir eine Tabelle Spielscheine und eine Tabelle Spielfelder an, wobei jedem Spielschein beliebig viele Spielfelder zugeordnet werden kann. | In diesem Beispiel legen wir eine Tabelle Spielscheine und eine Tabelle Spielfelder an, wobei jedem Spielschein beliebig viele Spielfelder zugeordnet werden kann. | ||
Zeile 10: | Zeile 9: | ||
<code php>php artisan make:migration create_spielscheine_table</code> | <code php>php artisan make:migration create_spielscheine_table</code> | ||
+ | |||
+ | Wir erweitern die up-Funktion in der neu unter "\dtabase\migrations" angelegte Datei: | ||
<code php> | <code php> | ||
- | public function up() | + | public function up() |
- | { | + | { |
- | Schema::create('spielscheine', function (Blueprint $table) { | + | Schema::create('spielscheine', function (Blueprint $table) { |
- | $table->bigIncrements('id'); | + | $table->bigIncrements('id'); |
- | $table->enum( 'Spiel', array( 'Lotto', 'Eurojackpot', 'Keno', 'GlücksSpirale' ) ); | + | $table->enum( 'Spiel', array( 'Lotto', 'Eurojackpot', 'Keno', 'GlücksSpirale' ) ); |
- | $table->string( 'Name', 50 ); | + | $table->string( 'Name', 50 ); |
- | $table->string( 'Losnummer', 7 ); | + | $table->string( 'Losnummer', 7 ); |
- | $table->tinyInteger( 'Wochentage' ); | + | $table->tinyInteger( 'Wochentage' ); |
- | $table->boolean( 'Spiel_77' ); | + | $table->boolean( 'Spiel_77' ) ->default( 0 ); |
- | $table->boolean( 'Super_6' ); | + | $table->boolean( 'Super_6' ) ->default( 0 ); |
- | $table->boolean( 'GluecksSpirale' ); | + | $table->boolean( 'GluecksSpirale' ) ->default( 0 ); |
- | $table->boolean( 'Plus_5' ); | + | $table->boolean( 'Plus_5' ) ->default( 0 ); |
- | $table->timestamps(); | + | $table->timestamps(); |
- | }); | + | }); |
- | } | + | } |
</code> | </code> | ||
==== Model für "Spielschein" anlegen ==== | ==== Model für "Spielschein" anlegen ==== | ||
+ | Wir erweitern die Klasse der neu angelegten Datei "App\Spielschein.php" um den Namen der Tabelle: | ||
- | <code php>php artisan make:model Spielschein</code> | + | <code php> |
+ | protected $table = 'spielscheine'; | ||
+ | |||
+ | public function Spielfelder() | ||
+ | { | ||
+ | return $this->hasMany( 'App\Spielfeld' ); | ||
+ | } | ||
+ | </code> | ||
---- | ---- | ||
Zeile 43: | Zeile 52: | ||
<code php> | <code php> | ||
- | public function up() | + | public function up() |
- | { | + | { |
- | Schema::create('spielfelder', function (Blueprint $table) { | + | Schema::create('spielfelder', function (Blueprint $table) { |
- | $table->bigIncrements('id' ); | + | $table->bigIncrements('id' ); |
- | $table->bigInteger( 'spielschein_id' ) ->unsigned(); | + | $table->bigInteger( 'spielschein_id' ) ->unsigned(); |
- | $table->foreign( 'spielschein_id' ) -> references( 'id' ) -> on( 'spielscheine' ) -> onDelete( 'cascade' ); | + | $table->foreign( 'spielschein_id' ) -> references( 'id' ) -> on( 'spielscheine' ) -> onDelete( 'cascade' ); |
- | $table->tinyInteger( 'Zahl_1' ); | + | $table->tinyInteger( 'Zahl_1' ); |
- | $table->tinyInteger( 'Zahl_2' ); | + | $table->tinyInteger( 'Zahl_2' ); |
- | $table->tinyInteger( 'Zahl_3' ); | + | $table->tinyInteger( 'Zahl_3' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_4' ); | + | $table->tinyInteger( 'Zahl_4' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_5' ); | + | $table->tinyInteger( 'Zahl_5' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_6' ); | + | $table->tinyInteger( 'Zahl_6' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_7' ); | + | $table->tinyInteger( 'Zahl_7' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_8' ); | + | $table->tinyInteger( 'Zahl_8' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_9' ); | + | $table->tinyInteger( 'Zahl_9' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Zahl_10' ); | + | $table->tinyInteger( 'Zahl_10' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Eurozahl_1' ); | + | $table->tinyInteger( 'Eurozahl_1' ) ->nullable( true ) ->default( NULL ); |
- | $table->tinyInteger( 'Eurozahl_2' ); | + | $table->tinyInteger( 'Eurozahl_2' ) ->nullable( true ) ->default( NULL ); |
- | }); | + | }); |
- | } | + | } |
</code> | </code> | ||
Zeile 80: | Zeile 89: | ||
<code php>php artisan make:model Spielfeld</code> | <code php>php artisan make:model Spielfeld</code> | ||
+ | Die in "App\Spielfeld.php" neu erstellte Klasse muss lediglich um den Namen der Tabelle erweitert werden: | ||
+ | |||
+ | <code php>protected $table = 'spielfelder';</code> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | * [[laravel:hasMany_example|Teil 2: Überprüfung, ob die Verknüpfung funktioniert]] |