Может войдёшь?
Черновики Написать статью Профиль

Что и почему - конструкторы запросов и Eloquent

перевод

Если вы работали с Laravel, скорее всего вы сразу начали использовать Eloquent ORM и пропустили чистые запросы к БД. Однако вы могли пропустить классную вещь — конструктор запросов Fluent Query Builder. Если вы делали запросы наподобие PHPModel::where('name''John'), значит, вы привыкли к удивительному синтаксическому сахару, который Fluent добавляет в ваш код.

Но очень не просто разобраться, какую древнюю магию использовали Тэйлор и команда, чтобы воплотить эту мечту в реальность. Чтобы начать, давайте вспомним функцию PHPnewQuery в модели Eloquent, в которой все начинается с создания конструктора запросов Eloquent. Затем мы вызываем его PHPsetTable — просто берётся результат вызова функции PHPgetTable нашей модели и задается таблица для нашего соединения с БД. Мы также задаём отношения в зависимости от атрибута with (в следующих статьях мы рассмотрим подробнее, как конструктор запросов загружает отношения). Затем мы проверяем, хотим ли мы включить или исключить мягко удалённые модели (soft-deleted models). Если надо их исключить, то мы добавляем к запросу условие через PHPgetQualifiedDeletedAtColumn, который по умолчанию deleted_at.

Теперь, мы можем использовать наш экземпляр конструктора запросов Eloquent. Если вы знакомы с Fluent, то вы можете выполнять все ваши обычные запросы, вперемешку с запросами Eloquent. Но действительно здорово то, что конструктор запросов Eloquent предоставляет множество вспомогательных функций, которые позволяют писать в четком, быстром синтаксисе ORM, который и делает Eloquent великолепным.

Метод PHPFind

Скорее всего первым методом запросов Eloquent, который вы изучите, будет метод поиска — PHPfind(). Он вызывает метод модели PHPgetKeyName и возвращает запрос вида PHPwhere($primaryKey'='$id). А PHPfindOrFail выполняет тот же запрос и, если модель не найдена, возбуждает исключение PHPModelNotFoundException.

Этот список будет постепенно обновляться, по мере выявления отличий между конструкторами запросов Eloquent и Fluent.

Если вам захочется посмотреть исходники конструктора запросов Eloquent, вы можете сделать это через Github.

Как вы считаете, полезен ли этот материал? Да Нет

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.