Ricerca…


migrazioni

Per controllare il tuo database in Laravel è usando le migrazioni. Crea migrazione con artigiano:

php artisan make:migration create_first_table --create=first_table

Questo genererà la classe CreateFirstTable. All'interno del metodo up puoi creare le tue colonne:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFirstTable extends Migration
{
    public function up()
    {
        Schema::create('first_table', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_string_column_name');
            $table->integer('secont_integer_column_name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('first_table');
    }
} 

Alla fine di eseguire tutte le classi di migrazione è possibile eseguire il comando artisan:

php artisan migrate

Questo creerà le tue tabelle e le tue colonne nel tuo database. Altri comandi di migrazione utili sono:

  • php artisan migrate:rollback - Rollback l'ultima migrazione del database
  • php artisan migrate:reset - Ripristina tutte le migrazioni di database
  • php artisan migrate:refresh - Reimposta e riesegui tutte le migrazioni
  • php artisan migrate:status : mostra lo stato di ciascuna migrazione

Modifica delle tabelle esistenti

A volte, è necessario modificare la struttura della tabella esistente come renaming/deleting colonne. Che puoi realizzare creando una nuova migrazione. E nel metodo up della tua migrazione.

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

L'esempio sopra ridenomina la email column della users table al username . Mentre il codice sottostante rilascia un username colonna dalla tabella degli users .

IMPROTANT: per modificare le colonne è necessario aggiungere la dipendenza doctrine/dbal al file composer.json del progetto ed eseguire l' composer update per riflettere le modifiche.

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}

I file di migrazione

Le migrazioni in un'applicazione Laravel 5 risiedono nella directory database/migrations . I loro nomi di file sono conformi a un formato particolare:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Un file di migrazione dovrebbe rappresentare un aggiornamento dello schema per risolvere un particolare problema. Per esempio:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Le migrazioni dei database sono mantenute in ordine cronologico in modo che Laravel sappia in quale ordine eseguirle. Laravel eseguirà sempre le migrazioni dal più vecchio al più recente.

Generazione di file di migrazione

Creare un nuovo file di migrazione con il nome file corretto ogni volta che è necessario modificare lo schema sarebbe un lavoro ingrato. Per fortuna, il comando artisan di Laravel può generare la migrazione per voi:

php artisan make:migration add_last_logged_in_to_users_table

È inoltre possibile utilizzare le --table e --create bandiere con il comando precedente. Questi sono opzionali e solo per comodità e inseriranno il codice boilerplate pertinente nel file di migrazione.

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

È possibile specificare un percorso di output personalizzato per la migrazione generata utilizzando l'opzione --path . Il percorso è relativo al percorso di base dell'applicazione.

php artisan make:migration --path=app/Modules/User/Migrations

All'interno di una migrazione del database

Ogni migrazione dovrebbe avere un metodo up() e un metodo down() . Lo scopo del metodo up() è eseguire le operazioni richieste per mettere lo schema del database nel suo nuovo stato, e lo scopo del metodo down() è di invertire qualsiasi operazione eseguita dal metodo up() . Garantire che il metodo down() annulli correttamente le operazioni è fondamentale per poter ripristinare le modifiche dello schema del database.

Un esempio di file di migrazione potrebbe essere simile a questo:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddLastLoggedInToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dateTime('last_logged_in')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('last_logged_in');
        });
    }
}

Durante l'esecuzione di questa migrazione, Laravel genererà il seguente SQL da eseguire sul tuo database:

ALTER TABLE `users` ADD `last_logged_in` DATETIME NULL

Esecuzione di migrazioni

Una volta scritta la migrazione, eseguendola verranno applicate le operazioni al database.

php artisan migrate

Se tutto è andato bene, vedrai un risultato simile al seguente:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel è abbastanza intelligente da sapere quando esegui migrazioni nell'ambiente di produzione. Se rileva che stai eseguendo una migrazione distruttiva (ad esempio, una che rimuove una colonna da una tabella), il comando php artisan migrate ti chiederà conferma. In ambienti di consegna continua questo potrebbe non essere desiderato. In tal caso, usa il flag --force per saltare la conferma:

php artisan migrate --force

Se hai appena eseguito le migrazioni, potresti essere confuso nel vedere la presenza di una tabella delle migrations nel tuo database. Questa tabella è ciò che Laravel utilizza per tenere traccia di ciò che le migrazioni sono già state eseguite. Quando si esegue il comando migrate , Laravel determinerà quali migrazioni devono ancora essere eseguite, quindi le eseguirà in ordine cronologico, quindi aggiornerà la tabella delle migrations in base alle esigenze.

Non dovresti mai modificare manualmente la tabella delle migrations meno che tu non sappia assolutamente cosa stai facendo. È molto facile lasciare inavvertitamente il database in uno stato di errore in cui le migrazioni falliscono.

Rolling Back Migrations

Che cosa succede se si desidera eseguire il rollback dell'ultima migrazione, ad esempio un'operazione recente, è possibile utilizzare il comando di rollback fantastico. Ma ricorda che questo comando ripristina solo l'ultima migrazione, che può includere più file di migrazione

php artisan migrate:rollback

Se sei interessato a ripristinare tutte le migrazioni delle applicazioni, puoi utilizzare il seguente comando

php artisan migrate:reset 

Inoltre se sei pigro come me e vuoi eseguire il rollback e migrare con un solo comando, puoi usare questo comando

php artisan migrate:refresh
php artisan migrate:refresh --seed

È anche possibile specificare il numero di passaggi per il rollback con l'opzione step . In questo modo verrà eseguito il rollback di 1 passaggio.

php artisan migrate:rollback --step=1


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow