首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉威尔的移民效益

拉威尔的移民效益
EN

Stack Overflow用户
提问于 2014-05-03 12:01:22
回答 3查看 3.8K关注 0票数 7

就像在laravel中,我们使用Migrations来创建表,然后Seeders将表种子出来,但没有得到它的好处,因为我们可以通过普通的方式去PHPMYADMIN,然后我们需要这样做,因为我们为它编码了很多行,但是我们如何证明这些代码行的合理性呢?

代码语言:javascript
复制
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateItemsTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('items', function(Blueprint $table)
        {
            $table->increments('id');
            $table->integer('owner_id');
            $table->string('name');
            $table->boolean('done');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('items');
    }

}

的确,移植是由php手工命令创建的,但是它们的好处是什么呢?因为我们有一个替代者来做这个?对于Seeder文件,我们为它编写了许多行代码。

代码语言:javascript
复制
class ItemTableSeeder extends Seeder{

    public function run(){
        DB::table('items')->delete();
    $items= array(
        array(
            'owner_id' => '1',
            'name' => 'Watch The Spectacular Now',
            'done' => True
            ),
        array(
            'owner_id' => '2',
            'name' => 'Watch Avengers',
            'done' => False
            ),
        array(
            'owner_id' => '1',
            'name' => 'Watch The Iron man',
            'done' => False
            ),
        array(
            'owner_id' => '1',
            'name' => 'Divergent',
            'done' => False
            ),
        array(
            'owner_id' => '1',
            'name' => 'Bat Man',
            'done' => False
            ),
        array(
            'owner_id' => '1',
            'name' => 'X-Men Days Of Future Past',
            'done' => False
            )
        );
    DB::table('items')->insert($items);

    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-03 12:13:45

迁移和种子是数据库版本控制。想象一下,有一天你会爱上PostgreSQL或者MySQL以外的任何东西。然后想象一下,您想要对多行数据进行一些测试。您会运行PHPMYADMIN的等价物并插入100、1000或10000行吗?

现在来看看这个:

代码语言:javascript
复制
// migration
class CreateCommentsTable extends Migration {

    public function up()
    {
        Schema::create('comments', function(Blueprint $table) {
            $table->increments('id');
            $table->string('body');
            $table->integer('author_id')->unsigned();
            $table->integer('post_id')->unsigned();
            $table->timestamps();
        });
    }

// seeder
class CommentsTableSeeder extends Seeder {

    public function run()
    {
        Eloquent::unguard();

        $faker = Faker::create();

        foreach(range(1, 1000) as $index)
        {
            Comment::create([
                'body' => $faker->sentence(10),
                'author_id' => rand(1,20),
                'post_id' => rand(1,150)
            ]);
        }
    }

Faker是一个很好的工具,你可以在这里找到:https://github.com/fzaninotto/Faker

现在所需要做的就是运行artisan migrate --seed

当然,与自动种子相比,还有更多的优点,您可以使用迁移来修改表,以防您想要更改模式等等。

票数 4
EN

Stack Overflow用户

发布于 2014-05-03 12:10:37

主要的好处是您将在您的开发服务器/站点中这样做,并且您可以在开发、迁移、回滚迁移和重新迁移中多次更改模式,并且一旦应用程序完成,您就不必记住在您的生产环境中必须做什么,Laravel将自动为您做这件事。

使用PHPMyAdmin,您必须在本地和远程服务器中手动创建表和编辑字段,并且可能会忘记一些东西并破坏应用程序。而且,如果您有多个服务器服务您的应用程序,那么问题就更大了。

票数 5
EN

Stack Overflow用户

发布于 2015-11-19 15:03:59

迁移文件维护表的架构。使用迁移,您可能不必使用phpMyAdmin (创建DB除外)。完成之后,您可以简单地运行命令‘迁移’,并从PHP端本身创建表。此外,您也不必担心DB环境(MySql、Posgres、Sql等),因为迁移并不真正依赖于要迁移表的环境。

种子有助于在应用程序中创建不同的角色(管理、用户、编辑器等)。您只需创建种子程序文件并运行'php artisan db:seed‘命令将数据从php端填充到表中。此外,种子有助于创建测试数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23444124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档