Schritt 1: Installiere Laravel 11
composer create-project --prefer-dist laravel/laravel blog
Schritt 2: Einrichten der Datenbank
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=
php artisan migrate
Schritt 3: Erstellen der Modelle und Migrationen
php artisan make:model Post -m
php artisan make:model Video -m
php artisan make:model Comment -m
$table->index('commentable_type');
$table->index('commentable_id');
Schritt 4: Definiere die Beziehungen in den Modellen
app/Models/Post.php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphMany;
class Post extends Model
{
public function comments(): MorphMany
{
return $this->morphMany(Comment::class, 'commentable');
}
}
Tipp
Verwende die Methoden with() und load() beim Abrufen von Modellen, um Eager Loading zu nutzen und die Anzahl der Datenbankabfragen zu minimieren.
Schritt 5: Konfigurieren der Morph Maps
app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Relations\Relation;
public function boot()
{
Relation::morphMap([
'post' => 'App\Models\Post',
'video' => 'App\Models\Video',
]);
}
Tipp
Das Hinzufügen von Morph Maps hilft, deine Datenbankabfragen lesbarer und verständlicher zu machen, da anstelle von Klassennamen kurze, lesbare Typen verwendet werden.
Schritt 6: Daten einfügen und testen
use App\Models\Post;
use App\Models\Video;
use App\Models\Comment;
$post = Post::create(['title' => 'My First Post', 'body' => 'This is the body of my first post.']);
$video = Video::create(['title' => 'My First Video', 'url' => 'http://example.com/video']);
$comment1 = new Comment(['body' => 'Great post!']);
$comment2 = new Comment(['body' => 'Nice video!']);
$post->comments()->save($comment1);
$video->comments()->save($comment2);
Schritt 7: Überprüfe die Beziehung
$post = Post::with('comments')->find(1);
$video = Video::with('comments')->find(1);
dd($post->comments, $video->comments);
Info
Mit dieser Schritt-für-Schritt-Anleitung und zusätzlichen Tipps kannst du die Morph Maps-Funktion in Laravel 11 erfolgreich einsetzen. Die Verwaltung polymorpher Beziehungen wird durch die Verwendung von benutzerdefinierten Morph-Typen erleichtert. Herzlichen Erfolg bei der Umsetzung!
Kommentare 0
Noch keine Kommentare. Seien Sie der Erste!