我想要在Laravel 5.1中刷新和填充单个表格。这是否可能?
我尝试了下面的代码,但它会出现错误(语法不正确)。
php artisan migrate:refresh --path=database/migrations/CreateTableTimesheet
如果我使用:php artisan migrate:refresh
,它只会显示:Nothing to migrate
migrate:refresh
命令回滚所有迁移,然后执行 migrate
命令。该命令会有效地重新创建整个数据库。php artisan migrate:refresh
您可以使用--class
选项来指定要单独运行的特定填充器类:
php artisan db:seed --class=UserTableSeeder
完整的代码如下:
php artisan migrate:refresh
php artisan db:seed --class=UserTableSeeder
最好先截断您的同一张表,然后再进行种子数据填充:
public function run()
{
Table::truncate();
//seed your table here
}
接下来,您可以像这样运行相同的填充器:
php artisan db:seed --class=YourSeeder
到目前为止,我认为没有任何答案解决了迁移和填充单个表的问题。因此,假设有迁移文件database/migrations/create_foo_table.php
和填充文件database/seeds/FooTableSeeder.php
,其中包含FooTableSeeder
填充类,您可以执行以下操作:
php artisan migrate:refresh --path=database/migrations/create_foo_table.php
php artisan db:seed --class=FooTableSeeder
这将回滚(Rollback)、迁移(Migrate)并填充(Seed)你的Foo表。请参阅Laravel 5.1文档中的回滚迁移和运行填充器(在撰写本文时,Laravel 7.x已发布,但语法未更改)。
包括完整的表名称
例如
php artisan migrate:refresh --path='database/migrations/2014_10_12_000000_create_table_timesheet.php'
php artisan tinker
>>> App\Status::truncate()
将清空状态表
这样你就可以执行
>>> App\{MODEL_CLASS}::truncate()
当我不想清除所有表格,特别是用户时,我发现这非常有用。
关于在 Laravel 框架中运行迁移、回滚、刷新和填充特定文件的技巧
迁移
php artisan migrate --path=/database/migrations/fileName.php
回滚
php artisan migrate:rollback --path=/database/migrations/fileName.php
刷新
php artisan migrate:refresh --path=/database/migrations/fileName.php
种子生成器
php artisan db:seed --class=classNameTableSeeder
谢谢
您可以分为两步来完成:
php artisan migrate:refresh --path=database/migrations/00_create_foo_table.php
database/seeds/DatabaseSeeder.php
中设置种子表:composer dump-autoload
php artisan db:seed
=== 额外信息 ===
您可以在 DatabaseSeeder.php
中注释掉您不想使用的种子数据:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
FooSeeder::class,
// BarSeeder::class,
// UserSeeder::class,
]);
}
}
database/seeds/FooSeeder.php
会被传递。