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