迁移与填充
介绍
迁移是数据库的一种版本控制方式。它们允许团队修改数据库架构,并保持对当前架构状态的更新。迁移通常与架构构建器配对,以便轻松管理应用程序的架构。
创建迁移
要创建迁移,可以在 Artisan CLI 上使用 migrate:make 命令:
php artisan migrate:make create_users_table迁移将放置在 app/database/migrations 文件夹中,并包含一个时间戳,以便框架确定迁移的顺序。
您还可以在创建迁移时指定 --path 选项。路径应相对于您安装的根目录:
php artisan migrate:make foo --path=app/migrations--table 和 --create 选项也可以用来指示表的名称,以及迁移是否将创建一个新表:
php artisan migrate:make add_votes_to_user_table --table=users
php artisan migrate:make create_users_table --create=users运行迁移
运行所有未完成的迁移
php artisan migrate为路径运行所有未完成的迁移
php artisan migrate --path=app/foo/migrations为包运行所有未完成的迁移
php artisan migrate --package=vendor/packageNOTE
如果在运行迁移时收到“类未找到”错误,请尝试运行 composer dump-autoload 命令。
在生产环境中强制迁移
某些迁移操作是破坏性的,可能会导致您丢失数据。为了保护您不在生产数据库上运行这些命令,系统会在执行这些命令之前提示您确认。要强制命令在没有提示的情况下运行,请使用 --force 标志:
php artisan migrate --force回滚迁移
回滚最后一次迁移操作
php artisan migrate:rollback回滚所有迁移
php artisan migrate:reset回滚所有迁移并重新运行所有迁移
php artisan migrate:refresh
php artisan migrate:refresh --seed数据库填充
Laravel 还提供了一种简单的方法,通过填充类向数据库填充测试数据。所有填充类都存储在 app/database/seeds 中。填充类可以有您希望的任何名称,但最好遵循一些合理的约定,例如 UserTableSeeder 等。默认情况下,为您定义了一个 DatabaseSeeder 类。从这个类中,您可以使用 call 方法运行其他填充类,从而控制填充顺序。
示例数据库填充类
class DatabaseSeeder extends Seeder {
public function run()
{
$this->call('UserTableSeeder');
$this->command->info('用户表已填充!');
}
}
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
User::create(array('email' => 'foo@bar.com'));
}
}要填充数据库,可以在 Artisan CLI 上使用 db:seed 命令:
php artisan db:seed默认情况下,db:seed 命令运行 DatabaseSeeder 类,您可以用它来调用其他填充类。然而,您可以使用 --class 选项单独指定要运行的特定填充类:
php artisan db:seed --class=UserTableSeeder您还可以使用 migrate:refresh 命令填充数据库,这将回滚并重新运行所有迁移:
php artisan migrate:refresh --seed