В новом уроке мы с вами добавим таблицы для бота в нашу БД. Таблицы будем создавать используя базовую систему миграций от Laravel.
Мы добавим таблицы для записи информации о статьях и пользователях.
Структура таблиц для бота
Для нашего бота я решил создать следующие таблицы:
- articles — информация о статьях
- chapters — главы конституции
- bot_users — информация о пользователях (пользователи запустившие бота)
- favorites — информация о статьях из раздела «Избранное»
- progress_study — информация о статьях со статусом «Прочитано»
Создание файла миграции
Для создания файла миграции, пропишите команду
php artisan make:migrations НазваниеМиграции
Для своего проекта я создал следующие миграции:
php artisan make:migrations create_articles_table
php artisan make:migrations create_chapters_table
php artisan make:migrations create_bot_users_table
php artisan make:migrations create_progress_study_table
php artisan make:migrations create_favorites_table
Все миграции расположены в директории database/migrations.
Таблица для статей конституции
Поля таблицы:
- id
- text (описание статьи)
- chapter (глава)
- article (номер статьи)
- section (раздел)
- created_at
- updated_at
Код файла миграции:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->text('text');
$table->integer('chapter');
$table->integer('article');
$table->integer('section');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('articles');
}
};
Таблица с пользователями
Поля таблицы:
- id
- id_telegram (ID аккаунта в Telegram)
- firstname (имя пользователя)
- lastname (фамилия пользователя)
- username
- study_status (статус обучения)
- id_last_message (ID последнего сообщения)
- created_at
- updated_at
Код файла миграции:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('bot_users', function (Blueprint $table) {
$table->id();
$table->bigInteger('id_telegram');
$table->string('firstname', 512)->nullable();
$table->string('lastname', 512)->nullable();
$table->string('username', 512)->nullable();
$table->integer('id_last_message')->nullable();
$table->tinyInteger('study_status')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('bot_users');
}
};
Таблица с главами конституции
Поля таблицы:
- id
- title (заголовок главы)
- created_at
- updated_at
Код файла миграции:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('chapters', function (Blueprint $table) {
$table->id();
$table->string('title', 512);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('chapters');
}
};
Таблица для раздела «Избранное»
Поля таблицы:Поля таблицы:
- id
- id_telegram
- favorite_value (JSON данные со списком статей)
- created_at
- updated_at
Код файла миграции:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('favorites', function (Blueprint $table) {
$table->id();
$table->bigInteger('id_telegram');
$table->json('favorite_value');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('favorites');
}
};
Таблица для раздела «Прогресс обучения»
Поля таблицы:
- id
- id_telegram
- progress_value (JSON данные со списком статей)
- created_at
- updated_at
Код файла миграции:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('progress_study', function (Blueprint $table) {
$table->id();
$table->bigInteger('id_telegram');
$table->json('progress_value');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('progress_study');
}
};
Запуск созданных миграций
Для запуска миграций необходимо прописать консольную команду команду
php artisan migrate
Если вы сделали всё корректно, то в вашей БД появятся все необходимые таблицы.