migrations
la migracio crea i administra les taules a la base de dades de laravel
✅ 1. On es troben les migrations?
Les migrations es guarden dins de database/migrations.
Cada fitxer de migration té un nom estructurat seguint aquest format:
YYYY_MM_DD_HHMMSS_create_nom_taula_table.php
Per exemple:
2024_01_19_120000_create_posts_table.php
El prefix de data i hora assegura que les migrations s'executin en ordre cronològic.
✅ 2. Com es crea una migration?
Per crear una nova migration, pots executar aquesta comanda a la terminal:
php artisan make:migration create_nom_taula_table
Per exemple, si vols crear una taula posts:
php artisan make:migration create_posts_table
Això generarà un nou fitxer dins de database/migrations/.
✅ 3. Com és una migration?
Cada fitxer de migration conté dues funcions principals:
- up(): Defineix què passa quan la migration s'executa (creació/modificació de la taula).
- down(): Defineix què passa quan la migration es desfà (elimina la taula o canvis).
Exemple d'una migration per la taula posts:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->integer('id', true); $table->string('title'); $table->integer('category_id')->nullable()->index('categoria_id'); $table->string('excerpt', 500)->nullable(); $table->text('content')->nullable(); $table->string('img')->nullable(); $table->string('url')->nullable(); $table->string('ins')->nullable(); $table->string('face')->nullable(); $table->string('youtube')->nullable(); $table->timestamp('created_at')->useCurrent(); $table->timestamp('updated_at')->useCurrent(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('posts'); } };
✅ 4. Com s’executa una migration?
Per aplicar totes les migrations pendents a la base de dades:
php artisan migrate
Si només vols executar una sola migration:
php artisan migrate --path=database/migrations/2024_01_19_120000_create_posts_table.php
✅ 5. Com es desfà una migration?
Si has fet un canvi incorrecte o vols tornar enrere:
- Fer un pas enrere (rollback de la última migració aplicada):
php artisan migrate:rollback
- Eliminar totes les migrations i tornar a començar:
php artisan migrate:fresh
- ⚠️ Això esborra totes les dades de la base de dades!
✅ 6. Com modificar una taula existent?
Si ja tens una taula creada i vols afegir una nova columna, has de crear una nova migració:
php artisan make:migration add_column_to_posts_table --table=posts
Això generarà un fitxer on podràs afegir la nova columna dins la funció up():
Schema::table('posts', function (Blueprint $table) { $table->string('slug')->after('title')->unique(); });
Per eliminar la columna en cas de rollback:
Schema::table('posts', function (Blueprint $table) { $table->dropColumn('slug'); });
Finalment, executa la migració:
php artisan migrate
✅ 7. Com gestionar relacions entre taules?
Laravel permet definir relacions a les migrations. Exemple d'una relació de posts amb categories:
Schema::table('posts', function (Blueprint $table) { $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); });
Aquest codi crea una clau forana que connecta posts amb categories.
✅ 8. Bones pràctiques amb migrations
✔ Sempre usa php artisan make:migration per generar migrations.
✔ Executa php artisan migrate abans de començar a treballar per assegurar que tens l'última versió de la base de dades.
✔ Usa rollback o fresh només en entorns de desenvolupament, no en producció.
✔ Si modifiques una taula, crea una nova migració en lloc d'editar una antiga (per evitar problemes en col·laboracions).
🚀 Resum ràpid
ComandaDescripcióphp artisan make:migration create_nom_taula_table | Crear una nova migration
php artisan migrate | Aplicar totes les migrations
php artisan migrate:rollback | Tornar enrere l'última migració
php artisan migrate:fresh | Esborrar i recrear totes les taules
php artisan make:migration add_column_to_table --table=nom_taula | Modificar una taula existent
🔹 Conclusió
Les migrations a Laravel són una eina molt potent per gestionar la base de dades com si fos codi. Permeten: ✔ Definir i modificar taules sense tocar la base de dades directament.
✔ Mantenir un historial de canvis i compartir-lo amb altres desenvolupadors.
✔ Assegurar consistència entre diferents entorns (desenvolupament, staging, producció).
- Categoria: web_development
- URL: https://laravel.com/docs/11.x/migrations
- YouTube: https://www.youtube.com/watch?v=WQLZjZnRJ8A
- Etiquetes: laravel, migrations, bbdd, artisan
- Data de creació: 19/01/2025
- Última actualització: 20/01/2025