Курс интернет магазин на Laravel. Урок 2. База данных

preview_player
Показать описание
Второй урок обучающего курса по созданию Интернет-магазина на Laravel. Будем работать с базой данных, фабриками и сидами. Начнем с тестовых данных для реализации предстоящей главной страницы.

#интернетмагазин#laravel#cutcode
---------------------------------------------------------------------------------

---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
02:06 Главная страница
02:03 Как выполняются миграции
05:05 Лайвхак - метод down
09:45 Настриваем фабрику
10:45 Создание сидов для брендов
12:16 Создание сидов для категорий
14:15 Контроль в категориях
19:28 Связующая таблица между товарами и категориями
20:55 Модель Product
23:38 Отношения hasMany
24:30 Создание сидов по товарам

Коллеги! Вновь приветствую вас на канале CutCode! Мы продолжаем курс по разработке интернет-магазина и переходим ко второму этапу. Cегодня мы поговорим с вами о базе данных - создадим структуру, модели, фабрики и сиды. В какой-то мере это основа скучный урок, где будет много разговоров, но он также важен. А из хороших новостей - следующий этап уже будет погружение во все тяжкие. Как я и говорил мы идем постепенно, от простого к сложному. Скажем так, разминаемся. Хотя те, кто смотрят закрытую часть курса думаю со мной не согласятся и первый закрытый урок был сложный и интересный. Но это только начало. Те у кого возник вопрос почему начинать с базы и тем более с фабрик и сидов: друзья тестовые данные наша основа в разработке. Это касается не только тестов - мы создадим тестовый контент ни в коем случае не будем начинать с админ панелей, тратить на это ресурсы в самом начале. Нам и в базу особо не нужно будет заглядывать. Будем генерировать контент, рефрешить, в общем полная концентрация на бизнес-логике. Ещё момент - мы сейчас с вами не будем дизайнить всю структуру предстоящего проекта, а начнём с сущностей на главной странице. Иногда я начинаю проекты с дизайна полной структуры, продумывая всё что потребуется в рамках индексов, виртуальных полей и так далее. Но это только в случае при наличии чёткого ТЗ, грамотно расписанной бизнес логики проекта. И я вам признаюсь такое встречается крайне редко. Обычно заказчик в процессе додумывает логику, приходит куча новых полей, изменений по сортировке и много еще всего. Плюс мы с вами обучаемся и тем самым начнём с малого, а далее будем наращивать миграции, учиться менять структуру в процессе, добавлять поля, индексы, все что нам будет попадаться на пути. Друзья давайте взглянем на главную страницу и посмотрим с чем нам предстоит работать в сегодняшнем уроке. Итак, корзину мы пока не трогаем. По корзине будет отдельный большой этап сложный, где мы будем начинать реализацию прямо с миграций. Идём далее. Категории, точно возьмем. Каталог товаров, товары в рамках полей которые мы видим на главной странице и бренды. Отлично. Прежде чем мы начнем давайте немного вспомним как выполняются миграции. Зайдем Database migrations и здесь файлы миграций. Они сортируются по названию, поэтому в названии указываются даты с номерами и выполняться будут сверху вниз. Если мы к примеру сейчас создадим миграцию с таблицей товаров, а потом с брендами и сделаем внешний ключ на бренды у товаров, то у нас возникнет ошибка, так как миграция с брендами еще не выполнялась и такой таблицы нет. Простые вещи, но я уже заметил исходя из чата что являются большинство именно на простых вещах. В целом друзья дизайн структуры базы данных также важен как и код что мы пишем. Чтобы каждая сущность имела свою ответственность, скажем есть пользователь, есть также профиль пользователя, заказ и его состав и так далее. Количество полей влияет на производительность. Кашу с сотней полей в таблице тяжело поддерживать как минимум только эти моменты могут делать модели толстыми. Мы об этом в процессе также будем постоянно говорить и идти правильным путем.

---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:

📼 Курс по Laravel с нуля:

Курс интернет магазин на Laravel. Урок 2. База данных

---------------------------------------------------------------------------------
Рекомендации по теме
Комментарии
Автор

По поводу репозиториев. Если приложение максимально маленькое, тестирование только по эндпоинтам и рост не предвидится, да, паттерн репозиторий будет оверинжиниринг. Во всех же остальных случаях паттерн репозиторий позволяет фейкать реальную базу и значительно ускорять тестирование. Но объективности ради следует сказать что модель ларавель это уже и есть репозиторий на самом деле. Я всегда использую репозитории. Лучше сразу начинать хорошо чем потом искать где в каких местах модели работают напрямую. Ну и плюс репозитории можно использовать как eloquent на запись и entity на чтение. Таким образом когда проект необходимо будет ускорять узкие места, а модели eliquent очень тяжелые, можно просто подменить репозиторий или фабрику моделей. Но это уже не базовый уровень, просто мысли вслух для тех кто понял

ИльяСорокин-дц
Автор

26:00 При таком создании каждый Product будет со своей уникальной категорией. То есть в каждой категории будет только один товар. Лучше наоборот создавать сидами Category а уже по связи добавлять в каждую категорию 1-3 товара

TsAex
Автор

19:15
добавляя cascadeOnDelete к миграции, мы же будем удалять товар при удалении бренда? не лучше ли сделать onDelete('set null') например?

grigodoes
Автор

Данил, привет, спасибо за контент, а разве цена(поле column price in products) не в decimal(type) должна быть, как на счет дробных чисел?

СергейБобков-бэ
Автор

Скажите...category точно BelongsToMany ....может HasMany???

Василий-чоь
Автор

Изображение полем? Не лучше бы модель изображений сделать с полиморфизмом?

pavelmgn
Автор

Лайфхак с методом down не понятен. В этом весь смысл накатывания и откатывания миграций. Если кто-то по какой-то причине запустил down на продакшене, так он мог и другими способами навредить. А руками лезть и вычищать базу такое себе. Не знаю чем Вам не понравился откат миграций, бывали случаи что приходилось воспользоваться. А руками в базу вообще грех разработчика лезть. Тем более двойной на продакшене

ИльяСорокин-дц
Автор

А почему нет офферов в продукте? Как вы будет продавать один и тот же товар с разными свойствами - футболка синяя xl, футболка синяя xxl и тд?

SpektRProduction