← Zurück zu Team für Laravel und Vue

Skill · Version 1.0.0

Laravel-Migrationen und Zuverlässigkeit

Plant Schemaänderungen und zusammengehörige Schreibvorgänge anhand bestehender Daten, Auslieferungsreihenfolge und Wiederherstellung.

laravel-migrations

Teammitglieder mit diesem Skill

Entdecke, wie der Skill hilft

Wann ist der Skill hilfreich?

Nutze diesen Skill für neue Felder oder Einschränkungen in befüllten Datenbanken.

Wobei hilft er dir?

  • Trennt Schemaentwicklung, begrenztes Nachfüllen und spätere Pflichtregeln.
  • Wählt genaue Typen, Beziehungen und Indizes nach Fachregeln.
  • Hält Transaktionen kurz und externe Wirkungen außerhalb unsicherer Grenzen.

Das könntest du fragen

Plane ein Pflichtkontofeld für vorhandene Bestellungen mit Nachfüllung und Rückweg ohne Datenbankzurücksetzung. Befülle einen kleinen erhaltenen Datensatz und prüfe Referenzen vor der Einschränkung. Erkläre, wie ältere Anwendungsinstanzen während des Übergangs weiter schreiben.

Ausführliche Dokumentation

Hier findest du die ursprüngliche Anleitung, Beispiele und Prüfschritte des Skills in ihrer Originalsprache.

Details…Weniger anzeigen

Migrations & Database Reliability

Safe migrations and deployment order

  • Generate migrations with php artisan make:migration. Never modify a migration that has already been committed and deployed; create a new migration for subsequent schema changes.
  • In Laravel 11+, when modifying an existing column (->change()), repeat all attributes you want to keep (nullable, default, comment, unsigned) or they may be dropped.
  • Take existing rows and deployment order into account: when adding a required column to a populated table, add it as nullable() (or with a safe default()), backfill existing rows in batches, and apply NOT NULL only once every row is populated.
  • Keep schema DDL and data transformations separate; never instantiate Eloquent models with evolving scopes or casts inside an old schema migration.
  • Never run migrate:fresh, migrate:refresh, migrate:reset or db:wipe on an unverified or shared database.

Keys, types and indexes

  • Use foreignId('user_id')->constrained() with an explicit cascadeOnDelete(), nullOnDelete() or restrictOnDelete() that matches the domain rule.
  • Store money and exact quantities as decimal(10, 2) or integer minor units (unsignedBigInteger), never float or double.
  • Add single or composite indexes for columns used in WHERE, JOIN and ORDER BY (putting equality columns before range columns in composite indexes), and add unique constraints where business rules require uniqueness.

Transactions, locks and side effects

  • Wrap related multi-table writes in DB::transaction(fn () => ...) and keep the transaction short. Never make external HTTP calls, file uploads or slow operations while holding a transaction open.
  • Prevent race conditions and lost updates with row locks (->lockForUpdate() inside a transaction), atomic increments/decrements, unique constraints or Cache::lock(), never arbitrary sleep() delays.
  • Dispatch jobs, events, mails and webhooks after the transaction commits (DB::afterCommit() or ShouldDispatchAfterCommit) so external consumers never observe rolled-back state.

Enthaltene Dateien 2

  • LICENSE.txt
  • SKILL.md