ORM в Laravel
Одна из задач, которую берут на себя ORM — это построение произвольных SQL-запросов в базу данных. В Laravel есть два метода работы с ORM:
Модели Eloquent
Построитель запросов QueryBuilder
Модели Eloquent
В этом варианте работы необходимо создавать модель, в моем случае Start
для работы с базой данных как с объектом, дальше доступны запросы и методы:
Start::select('body')->where('id', '=', 1)->value('body');
Генирируемый запрос к базе:
select `body` from `starts` where `id` = 1 limit 1
Построитель запросов QueryBuilder
В этом варианте работы можно не создавать модель, имя таблицы нужно указать в методе table()
для работы с базой данных как с объектом, дальше доступны запросы и методы:
DB::table('starts')->where('id', '=', 1)->value('body');
Генирируемый запрос к базе:
select `body` from `starts` where `id` = 1 limit 1
Доступные методы
Методы доступны для модели
и построителя запросов
. В языке запросов Eloquent есть по методу на каждую часть SQL, это достаточно легко понять из документации если вы знаете SQL. Дальше привожу список с боевыми примерами, которыем используются для моделей
и построителей запросов
. Обрашайте внимание, в каком стиле вы работаете и контролируйте SQL запрос через панель debugbar:
Получение данных
- Выборка select ()
- Получение всех данных all ()
- Получение одной записи first ()
- Получение одной записи first ()
- Получение записи по id find ()
- Получение всех записей table ()
- Получение одного значения value ()
- Массив значений одного столбца pluck ()
- Разделение результатов на куски chunk ()
Создание и изменение данных
- Вставка данных insert ()
- Обновление данных update ()
- Сохранение новой записи save ()
- Изменение старой записи save ()
Удаление данных
- Удаление данных delete ()
- Удаление записи delete ()
- Удаление записи по id destroy ()
- Мягкое удаление
Проверка данных
- Проверка значений столбца указонному интервалу whereBetween (), whereNotBetween ()
- Проверка на NULL whereNull (), whereNotNull ()
Сортировка данных
- Сортировка данных orderBy ()
- Сортировка по дате latest (), oldest ()
- Случайная сортировка inRandomOrder ()
Условия для получения данных
Сравнение данных
Агрегатные функции
- Агрегатная функция count ()
- Агрегатная функция max ()
- Агрегатная функция min ()
- Агрегатная функция avg ()
- Агрегатная функция sum ()
Соединение таблиц
- Соединение таблиц Inner Join (внутреннее соединение)
- Соединение таблиц left Join (внешнее соединение)
- Слияние запросов union ()