Eloquent ORM

Система объектно-реляционного отображения (ORM) Eloquent — красивая и простая реализация шаблона ActiveRecord для работы с базами данных. Каждая таблица имеет соответствующий класс-модель, который используется для работы с этой таблицей.

Основы использования

Для начала создадим модель Eloquent. Модели располагаются в папке app\models. Все модели Eloquent наследуют базовый класс eloquent и инициализируют переменную $_table с названием таблицы.

Пример создание модели:

@CLASS
role

@BASE
eloquent

@auto[]
$_table[roles]

Когда модель определена, у вас всё готово для того, чтобы можно было выбирать и создавать записи.

Методы Eloquent

@all[]

Получение всех записей модели.

$roles[^role:all[]]
@find[string $id]

Получение записи по любому уникальному полю.

$roles[^role:find[1]]
@new[]

Создание нового объекта модели.

$roles[^role:new[]]
@empty[]

Содержит пустоту, обычно используется при обновлении/добавлении записи.

$roles.name[^role:empty[]]
@sql[]

Выполнение произвольного sql запроса. %TABLE% - название таблицы, %KEY% - ключ таблицы.

$roles[^role:sql[SELECT %KEY% FROM %TABLE% LIMIT 2]]
@save[]

Сохранение данных в БД (только динамический вызов). Работает только для одной записи.

$roles[^role:find[admin]]
$roles[^role.save[]]
@delete[]

Удаление данных из БД (только динамический вызов). Работает как для одной записи, так и для многих сразу.

$roles[^role:all[]]
$roles[^role.delete[]]
@get_table[]

Получение название таблицы.

$name[^role:get_table[]]
@get_key[]

Получение название ключа таблицы.

$key[^role:get_key[]]
@get_id[]

Получение id записи, работает если только одна запись в моделе.

$roles[^role:find[admin]]
$id[^role:get_id[]]
@get_unique_fields[]

Получение списка уникальных столбцов.

$fields[^role:get_unique_fields[]]

Пример сохранения новой записи

$roles[^role:new[]]
$roles.name[Администратор]
$roles[^role.save[]]

Пример обновления записи

$roles[^role:find[1]]
$roles.name[Терминатор]
$roles[^role.save[]]

Модель любой таблицы

Класс Eloquent позволяет обращаться к любой таблице без создания дополнительных классов.

^eloquent:connect[roles]
$roles[^eloquent:all[]]
^eloquent:close[]

Метод connect устанавливает соединение с таблицей, с которой Eloquent должен работать. В конце необходимо вызвать метод clear, для того чтобы удалить соединение с таблицей.