Skip to content

4. Erstellung von Migration und Factory

Dieser Schritt ist optional, wenn man die Datenbanktabelle und die Testdaten manuell erstellt. In diesem Fall ist eine Migration und eine Factory nicht erforderlich.

Laravel-Migrationen sind PHP-Klassen, die Datenbankänderungen definieren. Sie ermöglichen versionierte Datenbankschemas, aber zunächst einmal eine automatisierte Erstellung der Datenbanktabelle. Die Migration muss vom Entwickler in der Artisan-Konsole manuell ausgeführt werden.

4.1 Automatische Erstellung der Migration mittels Artisan-Command

bash
php artisan uebung:create-module-migration uebung-vokabeltrainer

Dies erstellt eine neue Migrationsdatei basierend auf den fields, die in der config.json definiert wurden.

php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUebungVokabeltrainerTable extends Migration
{
    public function up()
    {
        Schema::create('uebung_vokabeltrainer', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->json('content_data');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('uebung_vokabeltrainer');
    }
}

Factories sind PHP-Klassen zur Generierung von Test-Datensätzen.

4.2 Erstellung der Factory mittels Artisan-Command

bash
php artisan uebung:create-module-factory uebung-vokabeltrainer

Dies erstellt eine neue Factory-Klasse:

php
<?php

namespace Modules\Uebungen\UebungVokabeltrainer\database\factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Modules\Uebungen\UebungVokabeltrainer\app\Models\UebungVokabeltrainer;

class UebungVokabeltrainerFactory extends Factory
{
    protected $model = UebungVokabeltrainer::class;

    public function definition()
    {
        return [
            'title' => $this->faker->sentence,
            'content_data' => json_encode([])
        ];
    }
}