1
2
3
4
5
6
7
8
9
10
11
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
}
1
2
3
4
5
6
7
8
9
10
11
12
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{ // В таком случае название таблицы не конвертируется.
protected $table = "admin_role";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{ // Этот метод работает как конструктор
protected function settings()
{
$this->setTableName('admin_role');
}
}
1
2
3
4
5
6
7
8
9
10
11
12
// Создаем заготовку модели
$user = User::create();
// Задаем значения аттрибутам
$user->login = 'Karl_Marx';
$user->password = md5('qwerty');
// Сохраняем модель в СУБД
$user->save();
// Теперь ей присвоен идентификатор
var_dump($user->id); // int(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
// Этим свойством можно установить поле первичного ключа
protected $primary = 'user_id';
}
1
2
3
4
5
6
7
8
9
// Создаем и сохроняем модель одной командой
$user = User::create(['login' => 'Karl_Marx',
'password' => md5('qwerty'),
]);
var_dump($user->user_id); // int(2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function settings()
{
// Помечаем поля login и password разрешенными к массовой загрузке
$this->setAllow(['login', 'password']);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{ // Эта константа разрешает всеобщую массовую загрузку
const BULK_UPLOAD = true;
protected function settings()
{ // Этот метод пометит атрибут role запрещенным
$this->setForbid(['role']);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// возвращает пользователя с идентификатором 2
$user = User::findById(2);
// возвращает массив пользователей с идентификаторами 1, 2, 3, 4
$users = User::findById([1, 2, 3, 4]);
// возвращает модель на основе первой записи из таблицы
$user = User::findOne();
// возвращает первую модель на основе записи, удовлетворяющей условию
$user = User::findOne(['id' => 2,
'status' => User::STATUS_ACTIVE]);
// возвращает все модели в виде массива
$users = User::findAll();
// возвращает все модели, удовлетворяющей условию, в виде массива
$users = User::findAll(['status' => User::STATUS_ACTIVE]);
// то же, что и findAll(), но возвращает результат в виде генератора
$users = User::findEach(['status' => User::STATUS_ACTIVE]);
// возвращает все модели в виде массива по произвольному запросу
$users = User::findBySql('SELECT * FROM {{%users}} WHERE id = :id', [':id' => 4]);
1
2
3
4
5
// возвращает модель с атрибутами 'id', 'login' и 'password'
// пользователя с идентификатором 2
$user = User::findById(2, ['login', 'password']);
1
2
3
4
5
6
7
8
9
10
11
12
13
// SELECT * FROM `users` LIMIT 1
$user = User::find()->one();
// SELECT * FROM `users` WHERE `login` LIKE(%Karl%) LIMIT 1
$user = User::find()->where(['like', 'login', '%Karl%'])->one();
// SELECT * FROM `users` WHERE `login` LIKE (%Karl%) AND `id` IN (2, 4, 6)
$users = User::find()->where(['like', 'login', '%Karl%'])
->andWhere(['in', 'id', [2, 4, 6]])
->all();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// получить 10 покупателей за один проход
$users = User::find()->batch(10);
foreach ($users as $batch) {
// массив, в котором находится 10 или меньше объектов User
var_dump($batch);
}
// получить 10 покупателей одновременно в виде генератора, и перебрать по одному
$users = User::find()->each(10);
foreach ($users as $user) {
// объект User
var_dump($user);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Вернет количество строк, удовлетворяющих условию
$cnt = User::countAll(['status' => User::STATUS_ACTIVE]);
var_dump($cnt); // int(3)
// Вернет количество строк по произвольному SQL выражению
$cnt = User::countBySql("SELECT * FROM {{%users}} WHERE status = :status",
[':status' => User::STATUS_ACTIVE]);
var_dump($cnt); // int(3)
// Определяеет, есть ли хоть одна строка, отвечающая условиям.
$ex = User::exists(['status' => User::STATUS_ACTIVE]);
var_dump($ex); // bool(true)
1
2
3
4
5
6
7
8
// получаем значения полей `login` и `email` для пользователя с ID = 2
$user = User::findById(2);
$login = $user->login;
$email = $user->email;
1
2
3
4
5
6
7
8
9
10
11
12
// получаем значения первой строки в виде массива
$user = User::find()->asArray()->one();
// получаем все модели в виде объектов StdClass
$users = User::find()->asObject()->all();
// вернуть обратно вид результата можно передав аргументом false
$user->asArray(false);
$user->asObject(false);
1
2
3
4
5
$user = User::findById(1);
var_dump((string)$user); // {"id":1,"login":"Karl_Marx","password".....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function settings()
{// Устанавливаем атрибуту status булев тип
$this->setTypes(['status' => 'boolean']);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
$user = User::find();
// Динамически устанавливаем атрибуту options тип array
$user->setTypes(['options' => 'array']);
$user->one();
// $options - массив, полученный из JSON
$options = $user->options;
// options автоматически сериализуется обратно в JSON
$user->options = ['foo' => 'bar'];
1
2
3
4
5
6
7
8
9
10
11
<?php
class User extends Model
{
// Метод будет вызван при обращении к свойству birthday
protected function geBirthdayAttr()
{
return date('d.m.Y', $this->attributes['birthday']);
}
}
1
2
3
4
5
6
7
$user = User::findById(1);
// Получаем преобразованное значение атрибута birthday
$birthday = $user->birthday; // 15.06.2000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
// Метод будет вызван при попытке что-либо записать
// в свойство first_name
protected function setFirstNameAttr($value)
{
return strtoupper($this->attributes['first_name']) .' - '. $value;
}
}
1
2
3
4
5
6
7
8
9
$user = User::findById(1);
echo $user->first_name; // Karl
// Пытаемся присвоить новое значение:
$user->first_name = ' батоно!';
// Теперь значение first_name в модели изменилось
echo $user->first_name; // KARL, батоно!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Внутри модели
$admins = self::DB()->select()
->from('admins')
->where('status=:status', [':status' => 3])
->queryAll();
// Снаружи модели
$profile = User::DB()->select('id, login, profile')
->from('user u')
->innerJoin('profile p', 'u.id=p.user_id')
->where('id=:id', [':id' => $id] )
->queryRow();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{ // Метод сработает при первом обращении к свойству profile
protected function getProfile()
{
return $this->hasOne(Profile::class);
}
}
1
2
3
4
5
6
7
8
$user = User::findById(2);
// Будет выполнен запрос SELECT * FROM profiles WHERE user_id = id LIMIT 1
$profile = $user->profile;
// Запроса не будет. Данные получены из свойства модели.
$profile = $user->profile;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getProfile()
{ // Задаем собственное поле для связи
return $this->hasOne(Profile::class, 'id_user');
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getProfile()
{ // Задаем связь по собственному первичному ключу,
// или другому полю, передав второй аргумент в виде массива
return $this->hasOne(Profile::class, ['user_id' => $this->primary]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getProfile()
{ // Задаем связь с более жестким условием
// SELECT * FROM profile WHERE id_user = (id) AND role = (status)
return $this->hasOne(Profile::class, ['user_id' => 'id',
'role' => 'status']);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getProfile()
{ // Задаем третьим параметром необходимые для выборки поля
// Первичный ключ будет выбран автоматически
return $this->hasOne(Profile::class, NULL, 'birthday, role');
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getMessage()
{ // Получаем все сообщения автора, отвечающие условию WHERE user_id = id
return $this->hasMany(Message::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class Message extends Model
{
public function getUser()
{// Получаем автора сообщения по запросу
// SELECT * FROM users WHERE id = (user_id)
return $this->belongsTo(User::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getRole()
{ // Получаем роли пользователя через промежуточную таблицу
return $this->belongsToMany(Role::class);
}
}
1
2
3
4
5
6
7
8
$user = User::findById(1);
// Будет выполнено два запроса
// SELECT role_id FROM role_user WHERE user_id = 1
// SELECT * FROM roles WHERE id IN (перечень найденных role_id)
$role = $user->role;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
countries
id - integer
name - string
users
id - integer
country_id - integer
name - string
posts
id - integer
user_id - integer
title - string
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class Country extends Model
{
protected function getPost()
{ // Получим все посты пользователей, относящихся к текущей стране
return $this->hasManyThrough(Post::class, User::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class Country extends Model
{
protected function getPost()
{ // Можно установить свои ключи
return $this->hasManyThrough(Post::class, User::class, 'country_id', 'user_id');
}
}
1
2
3
4
5
6
7
8
$country = Country::findById(1);
// Будет выполнено два запроса
// SELECT id FROM users WHERE id_country = 1
// SELECT * FROM posts WHERE user_id IN (перечень найденных id)
$post = $country->post;
1
2
3
4
5
6
7
8
9
10
11
12
13
// SELECT * FROM `users` WHERE `id` = 123
$user = User::findOne(123);
// SELECT * FROM `posts` WHERE `user_id` = 123
$post = $user->post;
// SQL-запрос не выполняется
$post2 = $user->post;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// SELECT * FROM `users` LIMIT 20
$users = User::find()->limit(20)->all();
foreach ($cusers as $user) {
// При каждой итерации будет выполнен запрос
// SELECT * FROM `posts` WHERE `user_id` = ...
$posts = $user->post;
}
1
2
3
4
5
6
7
8
9
10
11
12
// SELECT * FROM `users` LIMIT 20;
$users = User::find()->with('post') // добавляем связь для жадной загрузки
->limit(20)
->all();
// При первой итерации будет выполнен запрос
// SELECT * FROM `posts` WHERE `user_id` IN (...)
foreach ($users as $user) {
$posts = $user->post;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getPost()
{
return $this->hasMany(Post::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// SELECT * FROM `users` LIMIT 20;
$users = User::find()->with('group', 'post')
->limit(20)
->all();
// При первой итерации будут выполнены запросы
foreach ($users as $user) {
// SELECT * FROM `groups` WHERE `user_id` IN (...)
$groups = $user->group;
// SELECT * FROM `posts` WHERE `user_id` IN (...)
$posts = $user->post;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
// Связь для групп
protected function getGroup()
{
return $this->hasMany(Group::class);
}
// Связь для постов
protected function getPost()
{
return $this->hasMany(Post::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// SELECT * FROM `users` LIMIT 20;
$users = User::find()->with(['profile',
'post' => function ($query) {
return $query->andWhere('active = 1');
}])
->limit(20)
->all();
// При первой итерации будет выполнен запрос
foreach ($users as $user) {
// SELECT * FROM `posts` WHERE `user_id` IN (...) AND `active` = 1
$posts = $user->post;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
// SELECT * FROM `users` LIMIT 20;
$users = User::find()->with(['post.photo'])
->limit(20)
->all();
// SELECT * FROM `posts` WHERE `user_id` IN (...)
$posts = $users[1]->post;
// SELECT * FROM `photo` WHERE `post_id` IN (...)
$photo = $posts[1]->photo;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class User extends Model
{
protected function getPost()
{
return $this->hasMany(Post::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace App\Models;
use ABC\Core\ActiveRecord\Model;
class Post extends Model
{
protected function getPhoto()
{
return $this->hasMany(Photo::class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
// вставить новую строку данных
$user = Customer::create();
$customer->name = 'James';
$customer->email = 'james@example.com';
$customer->save();
// обновить имеющуюся строку данных
$customer = Customer::findOne(123);
$customer->email = 'james@newexample.com';
$customer->save();
1
2
3
4
5
6
7
// По одному
$user->setIgnored('name');
// Или сразу много
$user->setIgnored(['name', 'surname', 'phone']);
1
2
3
4
5
$customer = Customer::findOne(123);
$customer->delete();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$customer = Customer::findOne(123);
Customer::DB()->transaction(function($db) use ($customer) {
$customer->id = 200;
$customer->save();
// ...другие операции с базой данных...
});
// или по-другому
$transaction = Customer::DB()->beginTransaction();
try {
$customer->id = 200;
$customer->save();
// ...другие операции с базой данных...
$transaction->commit();
} catch(\Exception $e) {
$transaction->rollBack();
throw $e;
} catch(\Throwable $e) {
$transaction->rollBack();
throw $e;
}
1 | setAllow() | Установка разрешений к заполнению для атрибутов |
2 | setForbid() | Установка запрещений к заполнению для атрибутов |
3 | setTableName() | Устанавливает имя связанной таблицы |
4 | setIgnored() | Установка игнорируемых атрибутов |
5 | settings() | Метод для первоначальных настроек |
6 | setTypes() | Устанавливает типы атрибутов |
1 | __get() | Магический метод |
2 | __set() | Магический метод |
3 | __toString() | Магический метод |
4 | all() | Возвращает семейство моделей. |
5 | asArray() | Устанавливает тип результата (массив) |
6 | asObject() | Устанавливает тип результата (объект) |
7 | batch() | Возвращает семейство моделей партиями |
8 | belongsTo() | Получение обратной связи |
9 | belongsToMany() | Получение связи многие-ко-многим |
10 | command() | Выборка с помощью подготовленного конструктора запросов |
11 | countAll() | Возвращает количество строк, удовлетворяющих условию |
12 | countBySql() | Возвращает количество строк по SQL выражению. |
13 | create() | Создание новой модели |
14 | DB() | Возвращает конструктор запросов |
15 | delete() | Удаление записи |
16 | each() | Возвращает семейство моделей по одной |
17 | exists() | Проверяет, есть ли хоть одна строка, удовлетворяющая условию. |
18 | find() | Возвращает заполненные объекты модели с помощью SQL-конструктора |
19 | findAll() | Возвращает заполненные объекты модели, удовлетворяющие критериям |
20 | findById() | Возвращает заполненный(ые) объект(ы) модели по первичному ключу(ам) |
21 | findBySql() | Возвращает заполненные объекты модели по SQL выражению |
22 | findEach() | Возвращает заполненные объекты модели, удовлетворяющие критериям, в виде генератора |
23 | findOne() | Возвращает заполненный объект модели, удовлетворяющий условию |
24 | hasMany() | Получение связанных моделей в виде массива |
25 | hasManyThrough() | Получение связанных моделей "через одну" |
26 | hasOne() | Получение связанной модели "один-к-одному" |
27 | one() | Возвращает одну готовую модель |
28 | save() | Сохранение модели в БД |
29 | with() | Жадная загрузка |
Метод настроек.
Этот метод работает по принципу конструктора, так как использование штатного __construct() недопустимо.protected ActiveRecord::settings () | ||
return | void |
---|
Установка привязаной таблицы СУБД.
Этим методом можно установить собственное имя таблицы СУБД, если по каким то причинам не подходит внутреннее соглашение.protected ActiveRecord::setTableName ($table) | ||
$table | string | Название таблицы СУБД |
return | void |
---|
Задает типы атрибутам.
Задает типы, передав параметром массив с названиями и типами атрибутов.protected ActiveRecord::setTypes ($types) | ||
$types | array | Массив, где ключами являются имена атрибутов, значениями - их типы. Поддерживаются следующие типы: 1. integer - значение будет приведено к типу int 2. string - значение будет приведено к типу string 3. double - значение будет приведено к типу float 4. boolean - значение будет приведено к типу boolean 5. array - значение будет сериализовано в JSON при сохранении, и раскодировано при получении в массив 6. object - значение будет сериализовано в JSON при сохранении, и раскодировано при получении в объект |
return | void |
---|
Помечает атрибуты на игнор.
Атрибуты, имена которых были переданы аргументом в этот метод, будут проигнорированы при записи в СУБД.protected ActiveRecord::setIgnored ($attributes) | ||
$attributes | string|array | Имя или список имен атрибутов ввиде массива, которые нужно пометить на игнор. |
return | void |
---|
Разрешение на массовое заполнение.
Атрибуты, имена которых были переданы аргументом в этот метод, будут разрешены для массового заполнения.protected ActiveRecord::setAllow ($attributes) | ||
$attributes | string|array | Имя или список имен атрибутов ввиде массива, которым нужно разрешить массовое заполнение. |
return | void |
---|
Запрещение на массовое заполнение.
Атрибуты, имена которых были переданы аргументом в этот метод, будут запрещены для массового заполнения.protected ActiveRecord::setForbid ($attributes) | ||
$attributes | string|array | Имя или список имен атрибутов ввиде массива, которым нужно запретить массовое заполнение. Метод актуален только при установленной в true константы BULK_UPLOAD |
return | void |
---|
Создание модели.
Метод создаст заготовку модели, если вызван без параметра, либо заполненную переданными аргументом атрибутами модель.public static ActiveRecord::create ($attributes = []) | ||
$attributes | array | Массив атрибутов к массовому заполнению |
return | object | Объект модели Active Record |
---|
Получение моделей по ID.
Метод возвращает модель по первичному ключу, или семейство моделей по списку ключей.public static ActiveRecord::findById ($ids, $columns = null ) | ||
$ids | int|array | Идентификатор (первичны ключ) или список идентификаторов в виде массива |
$columns | string|array | Строка через запятую или массив с перечнем полей для выборки. Необязательный аргумент. При отсутствии будут выбраны все поля. |
return | object|array | Объект или массив объектов Active Record |
---|
Получение модели по условию.
Метод возвращает модель по условию, переданному аргументом. Условием должен быть массив [название атрибута => значение]. Если условия не заданы, будут возвращена модель первой строки.public static ActiveRecord::findOne ($conditions = null , $columns = null ) | ||
$conditions | array | Условия выборки в виде массива |
$columns | string|array | Строка через запятую или массив с перечнем полей для выборки. Необязательный аргумент. При отсутствии будут выбраны все поля. |
return | object | Объект Active Record |
---|
Получение семейства моделей по условию.
Метод возвращает массив моделей, отвечающих условиям, переданными аргументом. Условием должен быть массив [название атрибута => значение]. Если условия не заданы, будут возвращены все модели.public static ActiveRecord::findAll ($conditions = null , $columns = null ) | ||
$conditions | array | Условия выборки в виде массива |
$columns | string|array | Строка через запятую или массив с перечнем полей для выборки. Необязательный аргумент. При отсутствии будут выбраны все поля. |
return | array | Массив объектов Active Record |
---|
Получение семейства моделей по условию.
Метод возвращает семейство моделей, отвечающих условиям, переданными аргументом, в виде генератора, для перебора по одной. Условием должен быть массив [название атрибута => значение]. Если условия не заданы, будут возвращены все модели.public static ActiveRecord::findEach ($conditions = null , $columns = null ) | ||
$conditions | array | Условия выборки в виде массива |
$columns | string|array | Строка через запятую или массив с перечнем полей для выборки. Необязательный аргумент. При отсутствии будут выбраны все поля. |
return | object | Генератор объектов Active Record для перебора по одному |
---|
Получение моделей по SQL.
Метод возвращает модель по произвольному SQL-запросу.public static ActiveRecord::findBySql ($sql, $params = []) | ||
$sql | string | Произвольный SQL запрос |
$params | array | Параметры для запроса |
return | object|array | Объект или массив объектов Active Record |
---|
Получение моделей с помощью SQL-конструктора.
Метод подготавливает условия для получения моделей с помощью методов SQL-конструктора. Работает только с методами выборки.public static ActiveRecord::find ($columns = null ) | ||
$columns | string|array | Строка через запятую или массив с перечнем полей для выборки. Необязательный аргумент. При отсутствии будут выбраны все поля. |
return | object | Объект SQL-конструктора |
---|
Возвращает одну готовую модель.
Завершающий метод, возвращающий модель найденную с помощью метода find() и заданных условий.public ActiveRecord::one () | ||
return | object | Объект Active Record |
---|
Возвращает cемейство готовых моделей.
Завершающий метод, возвращающий массив с моделями, найденными с помощью метода find() и заданных условий.public ActiveRecord::all () | ||
return | array | Массив объектов Active Record |
---|
Возвращает cемейство готовых моделей.
Завершающий метод, возвращающий модели, найденные с помощью метода find() и заданных условий. Отличие от all() в том, что результат возвращается по одной за проход.public ActiveRecord::each ($amount = 1) | ||
$amount | int | Количество возвращаемых моделей. |
return | array | Объект генератора, возвращающего объекты Active Record по одной за проход |
---|
Возвращает cемейство готовых моделей.
Завершающий метод, возвращающий массив с моделями, найденными с помощью метода find() и заданных условий. Отличие от all() в том, что результат возвращается партиями.public ActiveRecord::batch ($amount = 1) | ||
$amount | int | Размер партии, возвращаемой за один проход. |
return | array | Объект генератора, возвращающего объекты Active Record партиями |
---|
Магический метод.
ЗМетод сработает при обращении к несуществующему свойству (атрибуту). Вернет либо модифицированный атрибут, либо атрибуты связанного объекта, если организована связь.public ActiveRecord::__get ($name) | ||
$name | string | Имя атрибута. |
return | mix | Значение модифицированного атрибута, либо данные из связанного объекта |
---|