Bonjour,
J'ai un soucis avec mes migrations, j'avais crée ma table "contacts" puis dans le developpement de l'application j'ai voulu ajouter un nouveau champ. je me suis retourner dans la migration correspondante puis ajouter la nouvelle ligne et un coup de "php artisan migrate". resultat "Nothing to migrate". J'ai manuellement supprimer la table dans SGBD et refais un "php artisan migrate" toujours rien. puis j'ai fais "php artisan clear-compiled" et "php artisan optimize" puis "php artisan migrate" toujours rien. Je voudrais savoir comment faire pour prendre en compte la modification de la table. La première table etait sans 'nom'.

Schema::create('contacts',function(Blueprint $table){
$table->increments('id');
$table->string('nom');
$table->string('email');
$table->text('objet');
$table->text('content');
$table->boolean('seen')->default(false);
$table->timestamps();
$table->integer('etat');
});

Ce que je veux

Mettre à jour ma table à partir des migrations.

Ce que j'obtiens

Nothing to migrate

4 réponses


AlexJM
Réponse acceptée

Bonjour,

Dans la table migrations sur ta DB, supprime la ligne correspondant au nom de fichier de la migration que t'a modifié, ensuite fait php artisan migrate
Normalement ça devrait le faire

Salut,

Lorsque tu as créé ta migration via artisan, tu as bien précisé le flag --table=contacts et non --create=contacts (https://laravel.com/docs/5.4/migrations#generating-migrations) ?

A mon avis non car sinon tu devrais avoir ceci :

Schema::table('contact', function (Blueprint $table) {
    // ici UNIQUEMENT les modification que tu souhaites apporter à ta table
});

Il faut prendre le temps de lire la documentation, tout y est indiqué (d'autant plus que, et je le répète, celle de Laravel est un régal de simplicité et est très explicite avec un exemple pour chaque situation).

Lexis
Auteur

Mon soucis c'est que la table "contacts" n'existe même plus sur "localhost/phpmyadmin" dans ma base de données du coup la mise à jours ne peut être effectuée. Si il y avais un moyen de recupérer l'ancienne table et agir dessus. Mais... Aussi un 'php artisan migrate:rollback/refresh' ne me ramène que les tables crées dernierement.

Ah ça c'est que tu as du faire une mauvaise manip, ou alors lorsque tu as fait un rollback, tu as effacé la table tout simplement. Là on ne peut pas grand chose pour toi :/