任何人都可以非常详细地告诉我如何扩展Illuminate \ Database \ Schema,以便添加一个zerofill函数,并修改当前的整数函数以获取一个长度参数,而不是实际修改任何一个供应商文件。
谢天谢地。
编辑:或者有没有办法用Schema Builder手动添加一个列,我只是因为我周五下午的沉重负责而错过了原因?
编辑:按照Gareth Oakley建议的方法,在Schema :: create()之后添加一个DB :: statement()调用:
<?php
class CreateExamplesTable extends Migration {
public function up()
{
Schema::create('examples', function(Blueprint $table)
{
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->integer('account_id')->unsigned();
$table->string('card_id', 20)->nullable();
$table->boolean('active')->default(true);
$table->timestamps();
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade')->onUpdate('cascade');
});
DB::statement('ALTER TABLE examples ADD invoice_id INT(6) UNSIGNED ZEROFILL NOT NULL AFTER card_id');
}
public function down()
{
Schema::drop('examples');
}
}
答案 0 :(得分:2)
我以前不需要使用zerofills - 我猜你是指这个功能:
与可选(非标准)属性一起使用时 ZEROFILL,空格的默认填充替换为零。对于 例如,对于声明为INT(4)ZEROFILL的列,值为5 检索为0005。
鉴于它不是标准的SQL属性,您可能需要使用DB类手动创建列:
DB::statement('ALTER TABLE MyTable ADD MyColumn INT UNSIGNED ZEROFILL NOT NULL');
架构构建非常适合绝大多数不需要使用数据库特定功能的情况,但看起来其他人偶尔也需要做类似的事情: