Php Laravel与数据库设计

Php Laravel与数据库设计,php,mysql,laravel,laravel-4,mysql-workbench,Php,Mysql,Laravel,Laravel 4,Mysql Workbench,我在Reddit上问了这个问题,但没有得到回答。我想我应该在这里试试 我是拉威尔的新手,一直在看文档,也在看杰弗里·韦的NetTuts视频。但是我还没有深入到太深的地方,所以如果这个问题在其他地方得到了明确的回答,请告诉我这个方向 我来自CodeIgniter的背景,对于我用它完成的所有项目,我通常在MySQL Workbench中设计我的数据库。我还使用它对模式进行更改,并将其作为数据库的可视化映射。MySQL工作台文件通常通过Git传递给其他开发人员 Laravel似乎希望您使用迁移创建表,

我在Reddit上问了这个问题,但没有得到回答。我想我应该在这里试试

我是拉威尔的新手,一直在看文档,也在看杰弗里·韦的NetTuts视频。但是我还没有深入到太深的地方,所以如果这个问题在其他地方得到了明确的回答,请告诉我这个方向

我来自CodeIgniter的背景,对于我用它完成的所有项目,我通常在MySQL Workbench中设计我的数据库。我还使用它对模式进行更改,并将其作为数据库的可视化映射。MySQL工作台文件通常通过Git传递给其他开发人员

Laravel似乎希望您使用迁移创建表,而MySQL工作台端的迁移似乎有点违反直觉。我知道迁移可以作为数据库的版本控制,这看起来很不错。然而,除此之外,我还不太明白这一点


有人能解释一下为什么我应该通过Laravel的迁移功能来构建表,而不是我一直以来的方式吗?

好吧,这是一个值得关注的问题。虽然Laravel并没有特别强迫您使用它,但我可以想到实现它的几个原因:

  • 兼容性。它几乎适用于任何数据库。如果您决定从MySQL更改为PostgreSQL,那么几乎没有什么可以更改的
  • 版本控制。正如您所提到的,它允许您控制数据库中发生的更改,并提供快速简便的方法来更新已经运行的数据库
  • 易于使用。通过命令行调用它非常容易。这意味着通过shell在服务器端创建数据库不会有任何问题

  • Laravel是一个PHP框架。与Zend等其他框架一样,您的开发到部署的时间框架将大大缩短,并且随着您的项目变得越来越大,未来需要更多的开发人员参与,您也可以在其他开发人员可以理解的框架内进行开发


    作为Laravel的一部分,迁移旨在快速、轻松地设置数据库方案,而无需键入任何MySQL。它还正确地呈现了模式。由于模式存在于文件中,因此可以轻松回滚和传输模式。

    Laravel进行迁移的主要原因是版本控制。创建迁移时,名称附带有日期。我自己使用Laravel,我绝对喜欢迁移。与Schema builder合作,它使我的生活更加轻松,不用使用古老的MySQL方法。下面是一些模式和迁移的示例

    创建新迁移文件的简单命令:

    php artisan migrate:make create_users_table
    
    Schema::create('users', function($table){
         $table->increments('id'); [will create a increments field with name of ID]
         $table->string('username'); [string field with name of username]
         $table->string('password'); [password is a special  field] 
         $table->text('body'); [string field with name of username]
    }); 
    
    在用户表迁移文件中:

    php artisan migrate:make create_users_table
    
    Schema::create('users', function($table){
         $table->increments('id'); [will create a increments field with name of ID]
         $table->string('username'); [string field with name of username]
         $table->string('password'); [password is a special  field] 
         $table->text('body'); [string field with name of username]
    }); 
    
    在底部,您只需添加以下内容:

    Schema::drop('users');
    
    然后运行migrate命令:

    php artisan migrate
    
    它会将所有列添加到表中

    如果您想要取回或添加到数据库中,只需运行以下命令

    php artisan迁移:回滚


    [您可以在此处添加特定命令以仅回滚某些表]

    谢谢,这更合理。(一般来说,如果您交叉发布,请链接到其他问题。这样,读者可以在承诺回答之前检查您是否在其他地方收到了答案。谢谢!)看看这个:我用它来创建迁移。