Vollständiges Laravel-Feature: Migration, Policy, Controller und Tests
Setze ein Laravel-Feature komplett um: Migration, Modell, Form Request, Policy, Controller, Routen und Feature-Tests mit Pest oder PHPUnit, ohne N+1-Abfragen. Entwickelt für ChatGPT, Claude, Gemini und Microsoft Copilot. Er enthält 5 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Fortgeschritten · Code · Redaktionelle Prüfung ausstehend
Prompt
Handle als erfahrener PHP-Entwickler mit Schwerpunkt Laravel und wartbarem Code.
Ich muss dieses Feature in einer Laravel-{{laravel_version}}-Anwendung umsetzen: {{feature}}.
- Entitäten und Beziehungen: {{entitaeten}}
- Rollen und Berechtigungen: {{rollen}}
- Test-Framework: {{tests}}
Liefere in dieser Reihenfolge:
1. Eine Designübersicht: Tabellen, Eloquent-Beziehungen, Routen und welche Schicht was übernimmt (Controller, Form Request, Policy, Action- oder Service-Klasse).
2. Migrationen mit Fremdschlüsseln, Indizes und explizitem `onDelete`, dazu Modelle mit `$fillable` oder `$guarded`, `casts` und Beziehungen.
3. Form Requests mit Validierungsregeln und deutschen Fehlermeldungen.
4. Eine registrierte Policy, durchgesetzt mit `authorize` oder der `can`-Middleware, für jede Rolle.
5. Einen schlanken Controller (Resource oder Single Action), der die Geschäftslogik an eine Action-Klasse delegiert, mit `DB::transaction` bei mehreren Schreibvorgängen.
6. Benannte Routen mit Middleware und Route Model Binding.
7. Ausgabe: eine API Resource bei einer API oder minimale Blade-Views bei einer Web-App. Eager Loading (`with`) gegen N+1-Abfragen.
8. Factories und Feature-Tests: Normalfall, fehlgeschlagene Validierung, Nutzer ohne Berechtigung (403) und fremder Datensatz.
9. Artisan-Befehle zum Erzeugen der Dateien und Ausführen der Tests.
Einschränkungen:
- Halte dich an Laravel-Konventionen und PSR-12; keine Logik in Routendateien.
- Erfinde keine Spalten, Rollen oder Regeln: frag nach, wenn etwas fehlt, oder nutze [AUSFÜLLEN].
- Wenn die gewählte Version etwas ändert (zum Beispiel den Aufbau von `bootstrap/app.php`), weise darauf hin.
Format: ein Codeblock pro Datei mit Pfad, am Ende eine Liste der Integrationsschritte.So verwenden Sie ihn
- Beschreibe das Feature als User Story mit seinen Regeln.
- Nenne die bereits vorhandenen Tabellen, damit nichts doppelt angelegt wird.
- Erzeuge die Dateien mit Artisan, füge den Code ein und führe die Tests aus.
- Prüfe die Policy mit jeder Rolle, bevor du deployst.
Anwendungsbeispiel
Feature: Kunden fordern Angebote an, der Vertrieb gibt sie frei · Entitäten: Kunde, Angebot, Angebotsposition · Laravel 11 · Pest.
Beispielergebnis
4. Policy — app/Policies/QuotePolicy.php
<?php
namespace App\Policies;
use App\Enums\QuoteStatus;
use App\Models\Quote;
use App\Models\User;
class QuotePolicy
{
// Admins dürfen alles; null überlässt die Entscheidung den übrigen Methoden
public function before(User $user): ?bool
{
return $user->isAdmin() ? true : null;
}
public function view(User $user, Quote $quote): bool
{
return $user->isSalesRep() || $quote->customer->user_id === $user->id;
}
public function create(User $user): bool
{
return $user->isCustomer();
}
public function approve(User $user, Quote $quote): bool
{
return $user->isSalesRep() && $quote->status === QuoteStatus::Pending;
}
}
In Laravel 11 wird die Policy automatisch gefunden, wenn sie der Konvention App\Models\Quote → App\Policies\QuotePolicy folgt – ein AuthServiceProvider zur Registrierung entfällt.
Integrationsschritte
php artisan make:policy QuotePolicy --model=Quote- Im Controller:
Gate::authorize('approve', $quote); - Pest-Test: Ein Kunde, der freigeben will, bekommt 403 – ebenso ein Kunde, der ein fremdes Angebot öffnet.
isAdmin(),isSalesRep()undisCustomer()hängen davon ab, wie Rollen gespeichert sind → [AUSFÜLLEN]…
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · PHP
- Ausgabetyp
- Code
- Niveau
- Fortgeschritten
- Entwickelt für
- ChatGPT, Claude, Gemini und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- Feature, Entitäten und Beziehungen, Rollen und Berechtigungen, Laravel-Version und Test-Framework
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Warum eine Action-Klasse statt allem im Controller?
So ist die Logik aus Commands, Jobs und Tests wiederverwendbar, und der Controller übersetzt nur HTTP. Außerdem lässt sie sich isoliert testen.
Wie finde ich N+1-Abfragen im generierten Code?
Aktiviere `Model::preventLazyLoading()` außerhalb der Produktion: Laravel wirft dann eine Exception, sobald eine Beziehung lazy geladen wird.
Wofür ist dieser Prompt gedacht?
Setze ein Laravel-Feature komplett um: Migration, Modell, Form Request, Policy, Controller, Routen und Feature-Tests mit Pest oder PHPUnit, ohne N+1-Abfragen.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude, Gemini und Microsoft Copilot entwickelt. Wir haben ihn in diesen Tools noch nicht überprüft, daher können die Ergebnisse variieren.
Wie passe ich den Prompt an?
Klicken Sie auf „Anpassen“ und füllen Sie die Variablen aus (Feature, Entitäten und Beziehungen, Rollen und Berechtigungen, Laravel-Version und Test-Framework). Der Text wird sofort aktualisiert und lässt sich anschließend mit einem Klick kopieren. Die Werte werden nur in Ihrem Browser gespeichert.
Brauche ich Erfahrung, um ihn zu verwenden?
Er ist für Fortgeschrittene: Es hilft, das Thema zu kennen, um guten Kontext zu liefern und das Ergebnis kritisch zu prüfen.
Ist dieser Prompt kostenlos?
Ja. Jeder Prompt von HomeCasa Prompts ist kostenlos, ohne Anmeldung und ohne Abonnement. Sie können ihn auch in beruflichen Projekten verwenden.
Kann ich der KI-Ausgabe vertrauen?
Betrachten Sie sie als hochwertigen Entwurf: Prüfen Sie Daten, Zahlen und wichtige Aussagen immer, bevor Sie etwas veröffentlichen oder Entscheidungen treffen.