使用laravel在字段模式迁移上定义属性zerofill和size

时间:2016-01-30 22:44:54

标签: php laravel

如何使用Laravel在字段模式迁移中定义属性zerofill和size(2)?

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgtk-3
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgdk-3
C:/msys64/mingw64/lib\libgobject-2.0.a(libgobject_2_0_la-gtype.o):(.text+0x99b0): multiple definition of `DllMain'
C:/msys64/mingw64/lib\libgdk_pixbuf-2.0.a(gdk-pixbuf-io.o):(.text+0x1f10): first defined here
collect2.exe: error: ld returned 1 exit status

和zerofill这个字段。

我想用我的播种机:

Schema::create('books', function (Blueprint $table) {
    $table->integer('reference')->length(2);
});

2 个答案:

答案 0 :(得分:5)

Zerofill不是SQL标准。 laravel的shema builder仅提供这些ANSI SQL标准。

但您可以使用变通方法使用原始sql语句定义它:

create_books.php

Schema::create('books', function (Blueprint $table) {
    $table->integer('reference');
});
DB::statement('ALTER TABLE books CHANGE reference reference INT(2) UNSIGNED ZEROFILL NOT NULL');

答案 1 :(得分:0)

如上所述,为了使您的迁移可移植,您需要使用访问器来提供。它看起来像这样:

Book.php模型

public function getReferenceAttribute($value)
{
    if($value){
        return str_pad($value, 2, '0', STR_PAD_LEFT);
    }else{
        return null;
    }
}