Зарегистрируйтесь, чтобы продолжить обучение

Настройка ORM PHP: Eloquent (ORM)

Этот курс состоит из двух видов практик. Одна выполняется в редакторе Хекслета, другая — на собственном компьютере. Для работы последней, нужно настроить Composer и подключить ORM. Этот процесс достаточно сложен даже для опытного разработчика, поэтому мы пойдём простым путём. Вам будет необходимо склонировать к себе готовый репозиторий и проверить его работоспособность:

git clone https://github.com/hexlet-components/php-eloquent-blog
cd php-eloquent-blog
make setup # установка зависимостей
make test # запуск тестов

# тут побегут SQL-запросы
OK (2 tests, 2 assertions)

Если на этом этапе вы увидите ошибки, то с большой вероятностью у вас не установлена поддержка SQLite в PHP. Чтобы её включить, вам нужно найти пакет, необходимый для вашей версии операционной системы и PHP. Для этого попробуйте набрать в гугл: "php install sqlite <тут название вашей операционной системы>"

В качестве базы данных в этом проекте используется SQLite. Такой выбор никак не влияет на работу с ORM, но значительно упрощает настройку и запуск кода на выполнение. SQLite в отличие от больших СУБД, хранится в одном файле и работает напрямую из кода. Под неё не поднимается отдельное приложение в системе.

Основные части репозитория

  • src/ – Здесь лежат модели и фабрики. Это основные элементы ORM. Подробнее о них дальше по курсу.
  • tests/ – Все сценарии работы с ORM описаны в виде тестов.
  • composer.json – Содержит библиотеки, необходимые для работы Eloquent.
  • src/config/loaders.php – В этом файле находится вся конфигурация. Функция bootstrap() создает файл для базы данных и инициализирует Eloquent. После выполнения этого метода, ORM готова к использованию.
  • db-prepare.php – Файл, запускаемый во время настройки сетапа. Он пересоздает базу данных и загружает туда тестовые данные.
  • src/config/schema.php – Содержит схему базы данных.
  • tests/BaseTest.php – базовый класс для тестов. Внутри него происходит настройка приложения.

REPL (PsySH)

Лучший способ "поиграться" с кодом данного проекта – использовать PsySH. С его помощью можно загрузить приложение в память, запустить интерпретатор и вызывать любой код приложения прямо из командной строки, взаимодействуя с базой данных. PsySH работает как для самостоятельной работы, так и в практике на сайте. Для его запуска наберите:

make console

./vendor/bin/psysh
Psy Shell v0.9.9 (PHP 7.3.8 — cli) by Justin Hileman
>>>

Если на экране появилось приглашение для ввода >>> значит всё получилось. Вы находитесь внутри PsySH и можете работать с приложением. Попробуйте набрать следующий код (он будет объясняться дальше по курсу):

# Создание нового объекта пользователя
>>> $user = new App\Models\User()
=> App\Models\User {#2394
     +incrementing: true,
     +exists: false,
     +wasRecentlyCreated: false,
     +timestamps: true,
   }
# Установка email
>>> $user->email = 'test@email.com'
=> "test@email.com"
# Сохранение в базу
>>> $user->save()

string(74) "insert into "users" ("email", "updated_at", "created_at") values (?, ?, ?)"
=> true

В последующих уроках будет много примеров кода. Не забывайте запускать репл и выполнять его там. Это поможет лучше разобраться с материалом и закрепить его на практике.


Самостоятельная работа

  1. Выполните шаги указанные в уроке.
  2. Изучите исходный код конфигурационных файлов.

Дополнительные материалы

  1. Репозиторий для экспериментов (PHP Eloquent Blog)

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»