Eloquent

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

Разбор методов работы с базой, используя Eloquent ORM.

Параметры модели

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cash extends Model
{
  //Связанная с моделью таблица.
  protected $table = 'cash';

  //Определяет необходимость отметок времени для модели - created_at, updated_at, deleted_at.
  //По умолчанию true
  public $timestamps = false;

  //Формат хранения отметок времени модели.
  protected $dateFormat = 'U';

  //Указать названия полей меток времени
  const CREATED_AT = 'creation_date';
  const UPDATED_AT = 'last_update';

  //Настройка формата времени
  protected function getDateFormat()
  {
    return 'U';
  }

  //Название соединения для модели.
  protected $connection = 'connection-name';
}

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

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

Метод Варианты Описание
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')    

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

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

Метод Описание
first() Получить только одну строку
get() Получить все строки
pluck('title', 'name') Получить массив значений одного или нескольких полей. Параметрами передаются имена полей

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

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

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

count()

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