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

问题描述 投票:0回答:2

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

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

和zerofill这个领域。

我想用我的播种机:

public function run()
{
    Book::create
    ([
        'reference' => 01
    ]);
}
php laravel
2个回答
4
投票

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');

0
投票

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

Book.php模型

public function getReferenceAttribute($value)
{
    if($value){
        return str_pad($value, 2, '0', STR_PAD_LEFT);
    }else{
        return null;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.