使用laravel创建带有前缀的值并在迁移中自动递增

时间:2018-09-29 13:22:41

标签: sql laravel

我想使用迁移在laravel中创建数据库表,该表中有4列

1) ID(Auto-Increment, Primary Key)
2) Book Name
2) Book ID
4) Price

现在,我需要自动填充BOOK ID列的值,这样的值 图书ID ='Book_1'(此处“ Book_”为前缀,ID列中的值为1)

因此,对于自动增量,我们创建如下

$table->increments('id');

我需要BookID,该怎么写。

2 个答案:

答案 0 :(得分:0)

可能的解决方案。

注意:不是在表创建(迁移)中,而是在实际存储数据时。

创建一个普通的varchar列来存储名称。

$table->string('name');

AppServiceProviderboot()函数中的

。做这样的事情。 假设您的特定模型是“书”

Book::created(function ($book) {
    $book->update(['name' => 'Book_' . $book->id]);
}

这会将事件绑定到“书”的创建。每次将新书保存到数据库中时,名称都会自动生成并保存。

答案 1 :(得分:0)

如果 BookID 列仅用于表示目的,则可以添加访问器。

public function getBookIdAttribute()
{
    return 'Book_' . $this->attributes['id'];
}

否则,您可以通过将其添加到模型中来完成

protected static function boot()
{
    parent::boot();

    static::created(function ($model) {
        $model->BookID = 'Book_' . $model->id;
        $model->save();
    });
}