Laravel框架之Migration使用教程技术
提到 Laravel, 像我前面说的,商业气息太浓,其本身用了 Composer 的加载和 Symfony 框架的库和大量的第三方的库,这样综合性太强的软件系统性能是不会很高也不会很稳定的。说起 Artisan,也只能如我前面说的: 它实现了对象的 ArrayAccess 接口,使用了 Closure,使得其代码看起来有点艺术,但是遗憾的是, PHP 本身的代码风格就是不太优雅的,纵使这样,让人感觉有很多的奇怪。Laravel 内部使用了依赖注入的 Service 架构反而增加的开发的成本,并且使用 Composer 的自动加载就是很麻烦的一件事情,如果 PHP 都这样玩了还不如直接用 Java。但是现实是,很多企业都选择了它。
前段时间看到一位同仁问另一位同事关于 PHP 中 use 和 require 的区别,Ta 弄不明白为什么有时候用 require, 有时候用 use; 而另外一个同事的回复让我更加不可思议,Ta 说 require 可以用来加载文件, Use 是用来加载类。他们可是有能力在使用了 Laravel 框架的大型复杂项目中编程的工程师,竟然搞不清这个问题,这些都是使用框架带来的笑话。
其实,我是不太喜欢 Laravel 框架的,抛开其他的不说,第一:它让开发成本大大增加,我认为,需求变化,代码需要修改是非常正常的事情,最重要的还不是架构,而是工程师对系统是不是足够熟悉,并且没有哪种架构能够在需求修改的情况下完全不修改代码。第二:框架应该解决的只是框架该做的事情,当一件事不能近乎完美的解决的时候,最好不要触碰;比如分页,比如 Migration,我第一次构建项目的时候,由于 Migration 太多,卡在那里半个小时没有反应,以为死掉了。
言归正传,开始 Migrations 教程。
php artisan make:migration create_tableName_table --create=tableName
php artisan make:migration add_columnName_to_tableName_table --table=tableName
up down 方法的常用写法:
// 连接其他数据库 public function up() Schema::connection('name_dw')->create('dw_team_main_community_daily', function (Blueprint $table) { $table->increments('id')->comment('主键id号'); $table->integer('team_id')->default(0)->comment('队伍id号'); $table->string('team_name')->default('')->comment('队伍名称'); $table->float('coverage_percent')->default(0)->comment('覆盖率'); $table->timestamps(); $table->index('team_id'); }); } public function down() { Schema::connection('name_dw')->drop('dw_broker_main_community_daily'); } // 默认数据库 public function up() { Schema::table('community_team', function (Blueprint $table) { $table->renameColumn('team_id', 'agent_id'); $table->integer('group_id')->default(0)->comment('组id号'); $table->integer('broker_id')->default(0)->comment('经纪人id号'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('community_team', function (Blueprint $table) { $table->renameColumn('agent_id', 'team_id'); $table->dropColumn('group_id'); $table->dropColumn('broker_id'); }); } // 软删除 $table->softDeletes(); // double 精度 $table->double('standard_person_avg_rate', 15, 8)->default(0)->comment('人均达标率');