LMLPHP后院

Laravel框架之Migration使用教程技术

maybe yes 发表于 2015-10-29 10:53

提到 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 教程。

Migration 是用来控制数据库版本的。

增加数据表,参数 --table 最好带上,命令如下:

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('人均达标率');

相关文章
2024-04-17 02:57:13 1713293833 0.014334