Шпаргалка Laravel Eloquent

Нет смысла перепечатывать всё, что есть в интернете. Самый лучший ресурс-шпаргалка:

PDF версия online шпаргали Laravel предлагает "простыню" на 13 страниц, я вырезал нужную часть, подкорректировал до 4 страниц в docx, такой вариант уже можно распечать на 2х сдвоенных страницах А4.

В нескольких словах что такое Eloquent

Система объектно-реляционного отображения ORM1 Eloquent - красивая и простая реализация ActiveRecord2 в Laravel для работы с базами данных. Каждая таблица имеет соответствующий класс-модель, который используется для работы с этой таблицей.

Суть технологии сводится к тому, что вместо ручного("сырого") написания SQL запросов используются цепочки методов, которые формируют рабочий код SQL запроса.

Вместо

SELECT * FROM users;
SELECT * FROM users WHERE name = `Вася` ORDER BY surname LIMIT 1;

Используем

User::all();
$user = User::where('name','Вася')->orderBy('surname')->first();
// Далее можно обращаться к полям как к свойствам модели:
echo $user->name;

Немного про модели Eloquent

Каждая модель соответствует таблице базы данных. По соглашению разработчиков предполагается:

  • Название модели является единственным числом от названия таблицы. Если таблица называется Planes, то модель - Plane.
  • Первичным ключом является id.
  • Столбцы с отметками времени назыаются оканчиваются на _at. Встроенные метки на создание, изменение и псевдоудаление created_at, updated_at и deleted_at.
  • Булевы поля начинаются с is_

Если за один запрос изменятся больше одной записи в базе данных, то в свойстве fillable (массив) модели должные присутствовать изменяемые поля. Тоже самое относится к вставкам через метод create (INSERT). В fillable должны находится все поля, что можно передавать из формы на сайте.

Модели поддерживают scopes - подмножества, позволяющие организовать логику запросов в моделях. Например нам нужны пользователи отцы: мужчины, у которых есть дети:

public function scopeFathers($query)
{
    return $query->where('childrens', '>', 0)->where('gender', 'man');
}

В дальнейшем используется как метод fathers():

User::where('name','Вася')->fathers()->get();

Полезные ссылки:

Похожие записи

Laravel migration: Specified key was too long

В Laravel 5.4 кодировкой базы данных по умолчанию стала utf8mb4. Это повлияло на приложения, использующие MySQL v5.7.7 и меньше. Во время выполненния миграций, может вывалитсья ошибка Specified key was too long.

27 августа 2017 г. в Laravel

Про сохранение полей даты в Eloquent

Если в моделе не указать

protected $dates = ['something_at'];

То надо делать формат

// Поле типа date 
'something_at' => Carbon::now()->addDays(7)->format('Y-m-d'),

// Поле типа date 
'something_at' => Carbon::now()->addDays(7)->format('Y-m-d H:i:s'),

Laravel Where Exists Clauses

Метод whereExists позволяет написать SQL-условия where exists. Метод whereExists принимает в качестве аргумента замыкание, которое получит экземпляр конструктора запросов, позволяя вам определить запрос для помещения в условие "exists":