作为不需要设置任何事件侦听器的替代解决方案,您可以--pretend
在运行命令时使用该选项:
php artisan migrate --pretend
这将转储迁移将运行的 SQL 查询,但不会实际运行迁移。它将在每一行输出迁移的类名和从该迁移运行的查询,因此对于创建users
具有唯一email
列的表的迁移,您将得到如下内容:
CreateUsersTable: create table `users` (`id` int unsigned not null auto_increment primary key, `email` varchar(255) not null, `password` varchar(60) not null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci
CreateUsersTable: alter table `users` add unique users_email_unique(`email`)
从 Laravel 4 到 Laravel 的最新版本(当时我发布这个答案是 5.1),这个选项就存在了。