Benutzer-Werkzeuge

Webseiten-Werkzeuge


laravel:belongstomany

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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]]
laravel/belongstomany.txt · Zuletzt geändert: 2019/10/08 20:57 von webproducer