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()
Удаление данных
Проверка данных
- Проверка значений столбца указонному интервалу whereBetween(), whereNotBetween()
- Проверка на NULL whereNull(), whereNotNull()
Сортировка данных
- Сортировка данных orderBy()
- Сортировка по дате latest(), oldest()
- Случайная сортировка inRandomOrder()
Условия для получения данных
Сравнение данных
Агрегатные функции
- Агрегатная функция count()
- Агрегатная функция max()
- Агрегатная функция min()
- Агрегатная функция avg()
- Агрегатная функция sum()
Соединение таблиц
- Соединение таблиц Inner Join (внутреннее соединение)
- Соединение таблиц left Join (внешнее соединение)
- Слияние запросов union()