Mysql
 sql >> Base de données >  >> RDS >> Mysql

Exécuter du SQL brut dans la migration

Le problème (comme @postashin l'a dit) était les backticks.

À partir de Laravel 5 (pas sûr de Laravel 4), vous auriez pu faire ceci :

DB::statement('ALTER TABLE `users` MODIFY `age` DATETIME');

En fait, vous n'aviez même pas besoin des tiques arrière car elles n'ont pas besoin de s'échapper. Vous auriez donc pu simplement écrire :

DB::statement('ALTER TABLE users MODIFY age DATETIME');

Vous n'en avez pas non plus besoin dans la fermeture si vous exécutez simplement une instruction de base de données.

Cependant, une meilleure approche de ce que vous faites est la suivante :

Schema::table('users', function(Blueprint $table) {
    $table->dateTime('age')->change();
});

Notez que la dernière solution peut parfois générer une erreur en raison d'un bogue dans Doctrine, qui se produit généralement si vous avez une énumération dans la table (pas seulement la colonne que vous modifiez).

Pour plus d'informations, voir Migration de la base de données Laravel - Modification de la colonne