====== Beispiel für migrations, models und seeds ====== ===== Migrations anlegen ===== Eine Migration stellt das Schema einer Datenbanktabelle dar. Der große Vorteil stellt sich heraus, wenn das Projekt mit einer Versionsverwaltung wie GIT erstellt wird. Weil Änderungen an der Datenbank im Normalfall nicht in Dateien festgehalten werden, sind sie kein Bestandteil vom Repository. Durch den Einsatz der Migration-Dateien können die Erstellung und Änderungen an den Tabellen mit in das Repository des Projektes aufgenommen werden. Somit hat jeder Entwickler, der das Projekt auschecked die aktuelle Datenbankstrukur für die lokale Entwicklung zur Verfügung. Mit "Artisan" kann mit nur einer Befehlszeile eine solche Migration angelegt werden: php artisan make:migration create_bundeslaender_table **Tipp für PhpStorm-Nutzer:** Die Artisan-Kommandos können direkt in PhpStorm ausgeführt werden. Hierfür einfach mit der Tastenkombination [Alt] + [F12] das Terminal und anschließend mit dem "+" eine neue Session öffnen. Die neu im Verzeichnis "database\migrations\" von artisan angelegte Migration kann jetzt wie im folgenden Beispiel angepasst werden: public function up() { Schema::create('bundeslaender', function (Blueprint $table) { $table->bigIncrements('id' ); $table->string( 'Bundeslandkuerzel', 2 ); $table->string( 'Bundesland', 25 ); $table->float( 'Bearbeitungsgebuehr' ); }); } ---- ===== Models anlegen ===== Ein Model stellt ein Datenbankobjekt als PHP-Objekt dar. Somit spielt beim Arbeiten mit Models keine Rolle, welche Datenquelle (z. B. Datenbank oder CSV-Datei oder ODBC-Datenquelle) damit aktualisiert wird. php artisan make:model Bundesland Die neu im Verzeichnis "app" von Artisan angelegte Datei "Bundesland" kann jetzt wie im folgenden Beispiel angepasst werden: class Bundesland extends Model { protected $table = 'bundeslaender'; } ---- ===== Seeds (initiale Datensätze) anlegen ===== Die Seeds (zu deutsch: Samen) sind Datensätze, die beim Einspielen der Datenbank-Struktur mit eingespielt werden sollen. php artisan make:seeder BundeslaenderTableSeeder Die neu im Verzeichnis "database\seeds\" angelegte Datei "BundeslaenderTableSeeder.php" kann jetzt wie im folgenden Beispiel angepasst werden: public function run() { DB::table( 'bundeslaender' ) -> delete(); DB::table( 'bundeslaender' ) -> insert( array( 0 => array( 'Bundeslandkuerzel' => 'BW', 'Bundesland' => 'Baden Würtemmberg', 'Bearbeitungsgebuehr' => 0.2 ), 1 => array( 'Bundeslandkuerzel' => 'BY', 'Bundesland' => 'Bayern', 'Bearbeitungsgebuehr' => 0.25 ), 2 => array( 'Bundeslandkuerzel' => 'BE', 'Bundesland' => 'Berlin', 'Bearbeitungsgebuehr' => 0.5 ) )); } Damit der neue Table-Seeder auch ausgeführt wird, muss die bereits vorhandene Datei "seeds\DatabaseSeeder.php" um den neuen Tabellen-Seeder erweitert werden: public function run() { $this->call(BundeslaenderTableSeeder::class ); } ---- ===== Migration einspielen ===== Die aktuelle Migration und die Seeder können nun mit nur einem Artisan-Komando in die Datenbank eingespielt werden: php artisan migrate:refresh --seed //Hinweis: Sollte beim ersten Versuch, den Seed anzulegen die folgende Fehlermeldung ausgegeben werden "ReflectionException : Class BundeslaenderSeeder does not exist". Kann ein "composer dump-autoload " bzw. in PHPStorm unter "Tools" ==> "Composer" ==> "Dump Autoloader..." abhilfe schaffen.//