我想使用迁移在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,该怎么写。
答案 0 :(得分:0)
可能的解决方案。
注意:不是在表创建(迁移)中,而是在实际存储数据时。
创建一个普通的varchar列来存储名称。
$table->string('name');
AppServiceProvider
类boot()
函数中的。做这样的事情。 假设您的特定模型是“书”
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();
});
}