Grewi
* 28.07.2023

Для работы с моделями в системе реализован абстрактный класс system/core/model/model реализующий методы для работы с таблицами в базе данных. 

Для работы с моделью необходимо создать в приложении его класс например app/models/users.php Имя класса должно совпадать с таблицей в базе данных. Например:

namespace app\models;
use system\core\model\model;

class users  extends model
{

}

Для автоматического создания класса можно воспользоваться консольной командой:

php e create/model model_name

Методы класса:

from

Метод предназначен для установки значения from в запросе

where

Метод принимает до трёх параметров.

  1. Имя столбца в таблице
  2. Оператор сравнения
  3. Значение

Если передан один параметр, то будет считаться что первые два параметра заменяются на 'id' и '=' соответственно, это будет равнозначно запросу:

$id = 1;
$object->where('id', '=', $id)->get();
//Будет равнозначно
$object->where($id)->get();

Если в метод будет передано два параметра, то во второй параметр будет передан знак '=', это будет равнозначно:

$slug = 'test';
$object->where('slug', '=', $slug)->get();
//Будет равнозначно
$object->where('slug', $slug)->get();

Метод позволяет вызывать его в цепочке несколько раз:

$object->where('name', 'test')->where('age', 32)->get();

whereNull

В качестве параметра принимает имя столбца в таблице которое должно иметь значение null

$object->whereNull('email')->all();

whereNotNull

В качестве параметра принимает имя столбца таблицы которое не должно иметь значение null.

$object->whereNotNull('name')->all();

whereIn

Метод позволяет делать выборку по нескольким значениям, в качестве параметров принимает имя столбца таблицы и массив значений

$arr = [1, 2, 3];
$object->whereIn('id', $arr)->all();

whereStr

Метод позволяет вставлять произвольный sql, например:

$object->where('id', '>', 100)->whereStr('AND `name` = :name', ['name' => 'test'])->all();

В качестве параметров принимает sql строку и массив значений для биндинга. Метод позволяет вставлять сложные условия.

leftJoin

Метод позволяет делать объединения таблиц по условию. Принимает три параметра:

  1. Имя таблицы для объединения
  2. Столбец таблицы для сравнения
  3. Второй столбец для сравнения
$user = users::where(1)->leftJoin('user_contacts', 'users.contacts', 'user.id')->get();

pagin и pagination

Методы позволяют реализовать разбивку на страницы в запросах. Метод pagin ставится в цепочке, в качестве параметра принимает число - количество элементов на странице, по умолчанию это значение свойства $_limitDirection
Метод pagination возвращает массив данных для формирования пагинации в шаблоне.

$users = users::pagin();
$this->data['pagin'] = $users->pagination();
$this->data['users] = $users->all();

select

Select по умолчанию имеет значение - "*". В качестве параметра принимает строку.

limit

Устанавливает значение для LIMIT, принимает в качестве аргумента строку.

sort

Устанавливает значения для ORDER BY. В качестве значений принимает два параметра:

  1. Направления сортировки - asc или desc
  2. Наименование столбца
$users = users::sort('asc', 'date_create')->all();

count

Считает количество найденных строк. Возвращает целое число.

$count = users::where('active', 1)->count();

summ

Возвращает результат суммирования по столбцу. В качестве параметра принимает имя столбца.

$summ = orders::where('user_id', 1)->summ('price');

all

Возвращает все совпадения в виде массива.

$users = users::all();

get

Возвращает первое совпадение в виде объекта.

$user = users::where(1)->get();

find

В качестве параметра принимает значение идентификатора, возвращает объект.

$user = users::find(1);

insert

Формирует запрос для вставки строки в таблицу. В качестве параметра принимает массив значений.

$data = [
	'name' => 'test',
	'email' => 'test@test.test',
	'password' => '123456',
];
users::insert($data);

update

Создаёт запрос для обновления значений в таблице.
В качестве параметра принимает массив значений.

$data = [
	'id' => 1,
	'name' => 'test',
	'email' => 'test@test.test',
	'password' => '654321',
];
users::update($data);

Значение идентификатора можно определить по условию

$data = [
	'name' => 'test',
	'email' => 'test@test.test',
	'password' => '654321',
];
users::where(1)->update($data);

save

Сохраняет текущее состояние объекта.

$user = users::find(1);
$user->name = "test2";
$user->save();

delete

Формирует запрос удаления строки.

//Удаление экземпляра объекта
$user = users::find(1);
$user->delete();

//Удаление по id
$userId = 1;
users::delete($userId);

Удаление по условию

users::where('active', 0)->delete();
Grewi 2024