Создать значение с префиксом и автоматическим приращением при миграции, используя laravel - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу создать таблицу базы данных в laravel, используя миграцию, у меня есть 4 столбца в этой таблице

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

Теперь мне нужно автоматически заполнить значение столбца BOOK ID, значение, подобное этому ID книги ='Book_1' (здесь "Book_" - это префикс, а 1 - это значение из столбца идентификатора)

, поэтому для автоматического увеличения мы создаем так:

$table->increments('id');

Мне нужно для BookID, как писать длячто.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Если столбец 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();
    });
}
0 голосов
/ 29 сентября 2018

возможное решение.

ПРИМЕЧАНИЕ: не при создании таблицы (переносе), а при фактическом хранении данных.

создайте обычный столбец varchar для хранения имени.

$table->string('name');

в функции AppServiceProvider class boot().сделать что-то подобноедавайте представим, что ваша конкретная модель - «Книга»

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

, которая свяжет событие с созданием «Книги».когда каждый раз новая книга сохраняется в базе данных, имя автоматически генерируется и сохраняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...