как правильно составить поля в БД , Laravel?
Не понятно до конца, какие поля должны быть в БД? Свои предположения написал в таблицу ниже.
Это информация – все что есть в тестовом:
Задача «Календарь»
Написать Rest API для ведения личного календаря.
GET /calendar Возвращает все записи в интервале между параметрами date_start и date_end.
POST /calendar Добавление новой записи в календарь.
Запись добавляется на конкретное время date и с конкретной длительностью в минутах duration. Также у записи есть поля title (обязательное) и description (не обязательное).Если запись добавляет аутентифицированный пользователь, то возможно наложение различных записей по времени (например, 13:00-14:30 и 14:00-15:00).
Если запись добавляется анонимным пользователем, то наложение времени недоступно.
Насколько я понял, то примерно так:
public function up()
{
Schema::create('calendars', function (Blueprint $table) {
$table->id();
$table->date('date');
$table->date('duration');
$table->string('title');
$table->text('description')->nullable();
$table->timestamps();
});
}
Ответы (1 шт):
"date_start и date_end" – это параметры, которые манипулируют промежутком времени по созданным карточкам из полей date или created_at (WHERE created_at > {date_start} AND created_at < {date_end}) в зависимости от контекста задачи (созданы ли карточки или на какое время назначена карточка в инвентаре). Соответственно, это не учитываем.
date должен быть типа timestamp, потому что учитываем ещё и время начала. duration должен быть типа int, так как это число минут. Наложения уже в коде обрабатываются, в базе это нет смысла как-то обозначать.
Так как учитывается пользователь, нужно поле с его id, которое ссылается на таблицу users.
Получится такая миграция:
Schema::create('calendars', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->nullable()->constrained('users')->onDelete('cascade');
$table->timestamp('date');
$table->integer('duration');
$table->string('title');
$table->text('description')->nullable();
$table->timestamps();
});