Eloquent

09 Сентября 2021 12:43

Конструктор запросов

Элементы запроса

Метод Варианты Описание
select('name', 'email as user_email')   Указываем поля для выборки. Можно использовать MySQL функции и присваивать алиасы через as.
addSelect('age')   Добавить поле для select, если уже запрос сформирован. Полезно при написании мудрёных скриптов, формирующих запросы.
join()   INNER JOIN из MySQL
leftJoin()   LEFT JOIN из MySQL
crossJoin()   CROSS JOIN из MySQL
where($key, $value)   Оператор WHERE в MySQL. Для самого простого варианта использования - первым параметром передается имя поля, вторым параметром искомое значение.
Можно передать 3 параметра, где 1 - поле, 2 - оператор, 3 - искомое значение
  where('votes', '>=', 100)  
  where('votes', '<>', 100)  
  where('name', 'like', 'T%')  
  where([ ['status', '=', '1'], ['subscribed', '<>', '1'], ])  
orWhere('name', 'John')   Оператор OR в MySQL. Принимает теже параметры, что и where()
whereBetween('votes', [1, 100])   Оператор BETWEEN в MySQL. Проверяет, что значения находятся в указанном интервале
whereNotBetween('votes', [1, 100])   Проверяет, что значения находятся вне указанного интервала
whereIn('id', [1, 2, 3])   Оператор IN в MySQL
whereNotIn('id', [1, 2, 3])   Оператор NOT IN в MySQL
whereNull('updated_at')   Проверяет, что значение поля равно NULL
whereNotNull('updated_at')   Проверяет, что значение поля не равно NULL
distinct()   Только уникальные значения
groupBy('status')    
take() / limit()   LIMIT из MySQL
whereHas() Post::whereHas('comments', function (Builder $query) { $query->where('content', 'like', 'code%'); })->get(); Для сложных выборок в отношениях
whereRelation() whereRelation('comments', 'is_approved', false) Для простых выборок в отношениях
when(true, function($query) {})   Проверяет условие и выполняет callback если условие true. Метод для удобства, чтобы не плодить if else.

Методы получения данных

Это окончательные методы для отправки запроса и получения данных, прописываются последними в формировании запроса

Метод Описание
first() Получить первую модель, соответствующую условию запроса
find() Найти только одну запись по id
findOrFail() Если результат не найден, будет выброшено исключение. Если исключение не перехвачено то будет осуществлен переход на страницу 404
get() Возвращает коллекцию всех элементов, соответствующих запросу
pluck('title', 'name') Получить массив значений одного или нескольких полей. Параметрами передаются имена полей

Аггрегатные методы

Также, вызываются в конце запроса и предназначены для получения данных, но уже с конкретными условиями

Метод Описание

count()

Получить подсчитанное количество результатов
min() Получить минимальное значение из выборки
max() Получить максимальное значение из выборки
avg() Получить среднее значение из выборки
sum() Получить сумму значений в выборке

Методы внесения/обновления данных

Метод Описание
save() Сохраняет данные в БД.
updateOrCreate() Обновляет существующую запись, а при ее отсутствии создает новую

Методы удаления данных

Метод Описание
delete() Удаляет существующий элемент
destroy() Удаляет существующий элемент по первичному ключу (id)

Отношения