migrations

Created at: 2025-01-19 19:59:35 | Updated at: 2025-01-20 10:22:40

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:

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:

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ó).


No valid image directory found or the category is not valid for the gallery.

Back to Posts
migrations

Title

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.