【问题标题】:Laravel 5.1 refresh and seed a single tableLaravel 5.1 刷新和种子单个表
【发布时间】:2016-02-04 20:11:44
【问题描述】:

我希望在 Laravel 5.1 中刷新和播种单个表。这甚至可能吗?

我尝试了以下方法,但它给出了错误(语法不正确)。

php artisan migrate:refresh --path=database/migrations/CreateTableTimesheet

如果我使用:php artisan migrate:refresh 它只是说:

没有什么要迁移的

【问题讨论】:

  • 你能找到解决办法吗?

标签: laravel laravel-5 seeding


【解决方案1】:

您可以分两步完成:

  1. 刷新您的特定表:
php artisan migrate:refresh --path=database/migrations/00_create_foo_table.php
  1. 种子表设置在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

【讨论】:

    【解决方案2】:

    我认为到目前为止没有任何答案可以解决迁移和播种单个表的问题。因此,给定迁移文件 database/migrations/create_foo_table.php 和包含 FooTableSeeder 种子类的种子文件 database/seeds/FooTableSeeder.php,您可以执行以下操作:

    php artisan migrate:refresh --path=database/migrations/create_foo_table.php
    php artisan db:seed --class=FooTableSeeder
    

    这将回滚、迁移和播种您的 Foo 表。请参阅:Laravel 5.1 文档中的 rolling back migrationsrunning seeders(在撰写本文时,Laravel 7.x 已经发布,语法没有改变)。

    【讨论】:

      【解决方案3】:
      php artisan tinker
      
      
      >>> App\Status::truncate()
      
      

      将清除状态表

      所以你可以这样做

      
      >>> App\{MODEL_CLASS}::truncate()
      
      

      当我不想清除所有表时,我发现这非常有用,尤其是用户。

      【讨论】:

        【解决方案4】:

        最好先截断同一张表,然后再播种:-

        public function run()
        {
            Table::truncate();
            //seed your table here
        }
        

        然后您可以像这样运行相同的播种机:-

        php artisan db:seed --class=YourSeeder
        

        【讨论】:

        • 如果你将 Eloquent 用于名为 Users 的模型,它将是 Users::on()->truncate(); .
        【解决方案5】:

        您可以使用migrate:refresh 命令回滚所有迁移,然后执行migrate 命令。此命令有效地重新创建您的整个数据库:

        php artisan migrate:refresh
        

        您可以使用--class 选项来指定要单独运行的特定播种器类:

        php artisan db:seed --class=UserTableSeeder
        

        完整的代码是:

        php artisan migrate:refresh
        php artisan db:seed --class=UserTableSeeder
        

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          也许首先备份数据库,删除它并检查整个播种、迁移和刷新机制是否有效。但首先转储工匠自动加载。

          【讨论】:

          • 让您的答案获得投票的好方法是包含示例或示例链接。
          猜你喜欢
          • 1970-01-01
          • 2016-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          相关资源
          最近更新 更多