Spec-Zone.ru › Yii 2.0

Класс yii\db\ActiveRecord

Все классы | Свойства | Методы | События | Константы
Наследование yii\db\ActiveRecord » yii\db\BaseActiveRecord » yii\base\Model » yii\base\Component » yii\base\Object
Реализует ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\db\ActiveRecordInterface
Использует трейты yii\base\ArrayableTrait
Доступно с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecord.php

ActiveRecord — базовый класс для классов, представляющих реляционные данные в виде объектов.

Active Record реализует шаблон проектирования Active Record. Суть Active Record заключается в том, что отдельный объект yii\db\ActiveRecord связан со строкой в таблице базы данных. Атрибуты объекта сопоставляются с столбцами соответствующей таблицы. Обращение к атрибуту Active Record эквивалентно доступу к соответствующему столбцу таблицы для этой записи.

Например, предположим, что класс Customer ActiveRecord связан с таблицей customer. Это означает, что атрибут name класса автоматически сопоставляется со столбцом name в таблице customer. Благодаря Active Record, предполагая, что переменная $customer является объектом типа Customer, для получения значения столбца name для строки таблицы можно использовать выражение $customer->name. В этом примере Active Record предоставляет объектно-ориентированный интерфейс для доступа к данным, хранящимся в базе данных. Но Active Record предоставляет гораздо больше функциональности, чем это.

Для объявления класса ActiveRecord необходимо расширить yii\db\ActiveRecord и реализовать метод tableName.

<?php

class Customer extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'customer';
    }
}

Метод tableName должен возвращать только имя таблицы базы данных, связанной с классом.

Подсказка: Вы также можете использовать генератор кода Gii для генерации классов ActiveRecord из таблиц вашей базы данных.

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

  • Используя оператор new для создания нового пустого объекта
  • Используя метод для извлечения существующей записи (или записей) из базы данных

Ниже приведен пример, демонстрирующий типичное использование ActiveRecord:

$user = new User();
$user->name = 'Qiang';
$user->save();  // a new row is inserted into user table

// the following will retrieve the user 'CeBe' from the database
$user = User::find()->where(['name' => 'CeBe'])->one();

// this will get related records from orders table when relation is defined
$orders = $user->orders;

Дополнительную информацию и сведения об использовании ActiveRecord см. в статье руководства об ActiveRecord.

Публичные свойства

Свойство Тип Описание Определено в
$activeValidators yii\validators\Validator[] Валидаторы, применимые к текущему $scenario. yii\base\Model
$attributes массив Значения атрибутов (имя => значение). yii\base\Model
$behaviors yii\base\Behavior[] Список поведений, прикрепленных к этому компоненту. yii\base\Component
$dirtyAttributes массив Измененные значения атрибутов (пары имя-значение). yii\db\BaseActiveRecord
$errors массив Ошибки для всех атрибутов или указанного атрибута. yii\base\Model
$firstErrors массив Первые ошибки. yii\base\Model
$isNewRecord boolean Является ли запись новой и должна ли она быть вставлена при вызове save(). yii\db\BaseActiveRecord
$iterator ArrayIterator Итератор для перебора элементов в списке. yii\base\Model
$oldAttributes массив Старые значения атрибутов (пары имя-значение). yii\db\BaseActiveRecord
$oldPrimaryKey смешанный тип Старое значение первичного ключа. yii\db\BaseActiveRecord
$primaryKey смешанный тип Значение первичного ключа. yii\db\BaseActiveRecord
$relatedRecords массив Массив связанных записей, индексированный именами отношений. yii\db\BaseActiveRecord
$scenario строка Сценарий, в котором находится эта модель. yii\base\Model
$validators ArrayObject|yii\validators\Validator[] Все валидаторы, объявленные в модели. yii\base\Model

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. yii\base\Object
__clone() Этот метод вызывается после создания объекта путём клонирования существующего. yii\base\Component
__construct() Конструктор. yii\base\Object
__get() Магический метод PHP getter. yii\db\BaseActiveRecord
__isset() Проверяет, является ли значение свойства нулевым. yii\db\BaseActiveRecord
__set() Магический метод PHP setter. yii\db\BaseActiveRecord
__unset() Устанавливает свойство компонента в значение null. yii\db\BaseActiveRecord
activeAttributes() Возвращает имена атрибутов, которые подлежат валидации в текущем сценарии. yii\base\Model
addError() Добавляет новую ошибку к указанному атрибуту. yii\base\Model
addErrors() Добавляет список ошибок. yii\base\Model
afterDelete() Этот метод вызывается после удаления записи. yii\db\BaseActiveRecord
afterFind() Этот метод вызывается, когда объект AR создается и заполняется результатом запроса. yii\db\BaseActiveRecord
afterRefresh() Этот метод вызывается, когда объект AR обновляется. yii\db\BaseActiveRecord
afterSave() Этот метод вызывается в конце вставки или обновления записи. yii\db\BaseActiveRecord
afterValidate() Этот метод вызывается после окончания валидации. yii\base\Model
attachBehavior() Присоединяет поведение к этому компоненту. yii\base\Component
attachBehaviors() Присоединяет список поведений к компоненту. yii\base\Component
attributeHints() Возвращает подсказки к атрибутам. yii\base\Model
attributeLabels() Возвращает метки атрибутов. yii\base\Model
attributes() Возвращает список всех имён атрибутов модели. yii\db\ActiveRecord
beforeDelete() Этот метод вызывается перед удалением записи. yii\db\BaseActiveRecord
beforeSave() Этот метод вызывается в начале вставки или обновления записи. yii\db\BaseActiveRecord
beforeValidate() Этот метод вызывается перед началом валидации. yii\base\Model
behaviors() Возвращает список поведений, которые должен выполнять этот компонент. yii\base\Component
canGetProperty() Возвращает значение, указывающее, можно ли прочитать свойство. yii\db\BaseActiveRecord
canSetProperty() Возвращает значение, указывающее, можно ли установить свойство. yii\db\BaseActiveRecord
className() Возвращает полное имя этого класса. yii\base\Object
clearErrors() Удаляет ошибки для всех атрибутов или одного атрибута. yii\base\Model
createValidators() Создает объекты валидаторов на основе правил валидации, указанных в rules(). yii\base\Model
delete() Удаляет строку таблицы, соответствующую этому активному записям. yii\db\ActiveRecord
deleteAll() Удаляет строки в таблице, используя предоставленные условия. yii\db\ActiveRecord
detachBehavior() Отсоединяет поведение от компонента. yii\base\Component
detachBehaviors() Отсоединяет все поведения от компонента. yii\base\Component
ensureBehaviors() Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. yii\base\Component
equals() Возвращает значение, указывающее, совпадает ли данный активный экземпляр записи с текущим. yii\db\ActiveRecord
extraFields() Возвращает список полей, которые можно расширить и получить с помощью toArray(). yii\base\ArrayableTrait
fields() Возвращает список полей, которые должны возвращаться по умолчанию методом toArray(), если не указаны конкретные поля. yii\base\ArrayableTrait
find() Создает экземпляр yii\db\ActiveQueryInterface для целей запроса. yii\db\ActiveRecord
findAll() Возвращает список активных записей, соответствующих указанному значению первичного ключа(ей) или набору значений столбцов. yii\db\BaseActiveRecord
findBySql() Создает экземпляр yii\db\ActiveQuery с заданным SQL-запросом. yii\db\ActiveRecord
findOne() Возвращает единственную активную запись по первичному ключу или массиву значений столбцов. yii\db\BaseActiveRecord
formName() Возвращает имя формы, которое должен использовать этот класс модели. yii\base\Model
generateAttributeLabel() Генерирует понятную метку атрибута на основе данного имени атрибута. yii\base\Model
getActiveValidators() Возвращает валидаторы, применимые к текущему $scenario. yii\base\Model
getAttribute() Возвращает значение указанного атрибута. yii\db\BaseActiveRecord
getAttributeHint() Возвращает текстовую подсказку для указанного атрибута. yii\db\BaseActiveRecord
getAttributeLabel() Возвращает текстовую метку для указанного атрибута. yii\db\BaseActiveRecord
getAttributes() Возвращает значения атрибутов. yii\base\Model
getBehavior() Возвращает объект поведения с указанным именем. yii\base\Component
getBehaviors() Возвращает все присоединенные к данному компоненту поведения. yii\base\Component
getDb() Возвращает подключение к базе данных, используемое данным классом AR. yii\db\ActiveRecord
getDirtyAttributes() Возвращает значения атрибутов, которые были изменены с момента их последней загрузки или сохранения. yii\db\BaseActiveRecord
getErrors() Возвращает ошибки для всех атрибутов или одного атрибута. yii\base\Model
getFirstError() Возвращает первую ошибку для указанного атрибута. yii\base\Model
getFirstErrors() Возвращает первую ошибку для каждого атрибута в модели. yii\base\Model
getIsNewRecord() Возвращает значение, указывающее, является ли текущая запись новой. yii\db\BaseActiveRecord
getIterator() Возвращает итератор для перебора атрибутов в модели. yii\base\Model
getOldAttribute() Возвращает старое значение указанного атрибута. yii\db\BaseActiveRecord
getOldAttributes() Возвращает старые значения атрибутов. yii\db\BaseActiveRecord
getOldPrimaryKey() Возвращает старое значение первичного ключа. yii\db\BaseActiveRecord
getPrimaryKey() Возвращает значение первичного ключа. yii\db\BaseActiveRecord
getRelatedRecords() Возвращает все загруженные связанные записи. yii\db\BaseActiveRecord
getRelation() Возвращает объект отношения с указанным именем. yii\db\BaseActiveRecord
getScenario() Возвращает сценарий, в котором используется данная модель. yii\base\Model
getTableSchema() Возвращает схему таблицы базы данных, связанной с данным классом AR. yii\db\ActiveRecord
getValidators() Возвращает все валидаторы, объявленные в rules(). yii\base\Model
hasAttribute() Возвращает значение, указывающее, имеет ли модель атрибут с указанным именем. yii\db\BaseActiveRecord
hasErrors() Возвращает значение, указывающее, есть ли ошибки валидации. yii\base\Model
hasEventHandlers() Возвращает значение, указывающее, есть ли обработчик, прикрепленный к событию с указанным именем. yii\base\Component
hasMany() Объявляет has-many отношение. yii\db\BaseActiveRecord
hasMethod() Возвращает значение, указывающее, определен ли метод. yii\base\Object
hasOne() Объявляет has-one отношение. yii\db\BaseActiveRecord
hasProperty() Возвращает значение, указывающее, определена ли свойство. yii\base\Object
init() Инициализирует объект. yii\db\BaseActiveRecord
insert() Вставляет строку в связанную таблицу базы данных, используя значения атрибутов этой записи. yii\db\ActiveRecord
instantiate() Создает экземпляр активной записи. yii\db\BaseActiveRecord
isAttributeActive() Возвращает значение, указывающее, является ли атрибут активным в текущем сценарии. yii\base\Model
isAttributeChanged() Возвращает значение, указывающее, был ли изменен указанный атрибут. yii\db\BaseActiveRecord
isAttributeRequired() Возвращает значение, указывающее, является ли атрибут обязательным. yii\base\Model
isAttributeSafe() Возвращает значение, указывающее, является ли атрибут безопасным для массового присваивания. yii\base\Model
isPrimaryKey() Возвращает значение, указывающее, представляет ли данный набор атрибутов первичный ключ для данной модели. yii\db\BaseActiveRecord
isRelationPopulated() Проверяет, загружено ли указанное отношение записями. yii\db\BaseActiveRecord
isTransactional() Возвращает значение, указывающее, является ли указанная операция транзакционной в текущем $scenario. yii\db\ActiveRecord
link() Устанавливает связь между двумя моделями. yii\db\BaseActiveRecord
load() Заполняет модель входными данными. yii\base\Model
loadDefaultValues() Загружает значения по умолчанию из схемы таблицы базы данных yii\db\ActiveRecord
loadMultiple() Заполняет набор моделей данными от пользователя. yii\base\Model
markAttributeDirty() Помечает атрибут как измененный. yii\db\BaseActiveRecord
off() Отсоединяет существующий обработчик событий от этого компонента. yii\base\Component
offsetExists() Возвращает, есть ли элемент по указанному смещению. yii\db\BaseActiveRecord
offsetGet() Возвращает элемент по указанному смещению. yii\base\Model
offsetSet() Устанавливает элемент по указанному смещению. yii\base\Model
offsetUnset() Устанавливает значение элемента по указанному смещению в null. yii\db\BaseActiveRecord
on() Присоединяет обработчик событий к событию. yii\base\Component
onUnsafeAttribute() Этот метод вызывается при массовом присваивании небезопасного атрибута. yii\base\Model
optimisticLock() Возвращает имя столбца, хранящего версию блокировки для реализации опмистической блокировки. yii\db\BaseActiveRecord
populateRecord() Заполняет объект активной записи строкой данных из базы данных/хранилища. yii\db\ActiveRecord
populateRelation() Заполняет указанное отношение связанными записями. yii\db\BaseActiveRecord
primaryKey() Возвращает имя(на) первичного ключа для данного класса AR. yii\db\ActiveRecord
refresh() Перезаполняет активную запись последними данными. yii\db\BaseActiveRecord
rules() Возвращает правила валидации для атрибутов. yii\base\Model
safeAttributes() Возвращает имена атрибутов, которые безопасно массово назначать в текущей ситуации. yii\base\Model
save() Сохраняет текущую запись. yii\db\BaseActiveRecord
scenarios() Возвращает список сценариев и соответствующих активных атрибутов. yii\base\Model
setAttribute() Устанавливает значение указанного атрибута. yii\db\BaseActiveRecord
setAttributes() Устанавливает значения атрибутов массовым способом. yii\base\Model
setIsNewRecord() Устанавливает значение, указывающее, является ли запись новой. yii\db\BaseActiveRecord
setOldAttribute() Устанавливает старое значение указанного атрибута. yii\db\BaseActiveRecord
setOldAttributes() Устанавливает старые значения атрибутов. yii\db\BaseActiveRecord
setScenario() Устанавливает сценарий для модели. yii\base\Model
tableName() Объявляет имя таблицы базы данных, связанной с этим классом AR. yii\db\ActiveRecord
toArray() Преобразует модель в массив. yii\base\ArrayableTrait
transactions() Объявляет, какие операции БД должны выполняться в рамках транзакции в разных сценариях. yii\db\ActiveRecord
trigger() Вызывает событие. yii\base\Component
unlink() Уничтожает связь между двумя моделями. yii\db\BaseActiveRecord
unlinkAll() Уничтожает отношение в текущей модели. yii\db\BaseActiveRecord
update() Сохраняет изменения в этой активной записи в связанной таблице базы данных. yii\db\ActiveRecord
updateAll() Обновляет всю таблицу с использованием предоставленных значений атрибутов и условий. yii\db\ActiveRecord
updateAllCounters() Обновляет всю таблицу с использованием предоставленных изменений счетчиков и условий. yii\db\ActiveRecord
updateAttributes() Обновляет указанные атрибуты. yii\db\BaseActiveRecord
updateCounters() Обновляет один или несколько столбцов счетчиков для текущего объекта AR. yii\db\BaseActiveRecord
validate() Выполняет проверку данных. yii\base\Model
validateMultiple() Проверяет несколько моделей. yii\base\Model

Защищенные методы

Метод Описание Определено в
createRelationQuery() Создает экземпляр запроса для отношения has-one или has-many. yii\db\BaseActiveRecord
deleteInternal() Удаляет ActiveRecord без учета транзакции. yii\db\ActiveRecord
findByCondition() Находит экземпляр(ы) ActiveRecord по заданному условию. yii\db\ActiveRecord
insertInternal() Вставляет ActiveRecord в БД без учета транзакции. yii\db\ActiveRecord
resolveFields() Определяет, какие поля могут быть возвращены методом toArray(). yii\base\ArrayableTrait
updateInternal() yii\db\BaseActiveRecord

События

Событие Тип Описание Определено в
EVENT_AFTER_DELETE yii\base\Event Событие, срабатывающее после удаления записи. yii\db\BaseActiveRecord
EVENT_AFTER_FIND yii\base\Event Событие, срабатывающее после создания и заполнения записи результатом запроса. yii\db\BaseActiveRecord
EVENT_AFTER_INSERT yii\db\AfterSaveEvent Событие, срабатывающее после вставки записи. yii\db\BaseActiveRecord
EVENT_AFTER_REFRESH yii\base\Event Событие, срабатывающее после обновления записи. (доступно начиная с версии 2.0.8) yii\db\BaseActiveRecord
EVENT_AFTER_UPDATE yii\db\AfterSaveEvent Событие, срабатывающее после обновления записи. yii\db\BaseActiveRecord
EVENT_AFTER_VALIDATE yii\base\Event Событие, вызываемое в конце validate() yii\base\Model
EVENT_BEFORE_DELETE yii\base\ModelEvent Событие, срабатывающее перед удалением записи. yii\db\BaseActiveRecord
EVENT_BEFORE_INSERT yii\base\ModelEvent Событие, срабатывающее перед вставкой записи. yii\db\BaseActiveRecord
EVENT_BEFORE_UPDATE yii\base\ModelEvent Событие, срабатывающее перед обновлением записи. yii\db\BaseActiveRecord
EVENT_BEFORE_VALIDATE yii\base\ModelEvent Событие, вызываемое в начале validate(). yii\base\Model
EVENT_INIT yii\base\Event Событие, срабатывающее при инициализации записи через init(). yii\db\BaseActiveRecord

Константы

Константа Значение Описание Определено в
OP_ALL 7 Все три операции: вставка, обновление, удаление. Это сокращение выражения: OP_INSERT | OP_UPDATE | OP_DELETE. yii\db\ActiveRecord
OP_DELETE 4 Операция удаления. В основном используется при переопределении transactions(), чтобы указать, какие операции являются транзакционными. yii\db\ActiveRecord
OP_INSERT 1 Операция вставки. В основном используется при переопределении transactions(), чтобы указать, какие операции являются транзакционными. yii\db\ActiveRecord
OP_UPDATE 2 Операция обновления. В основном используется при переопределении transactions(), чтобы указать, какие операции являются транзакционными. yii\db\ActiveRecord
SCENARIO_DEFAULT 'default' Имя сценария по умолчанию. yii\base\Model

Подробное описание методов

attributes() public method

Возвращает список всех имен атрибутов модели.

Реализация по умолчанию вернёт все имена столбцов таблицы, связанной с этим классом AR.

public array attributes ( )
return array

Список имён атрибутов.

delete() public method

Удаляет строку таблицы, соответствующую этому активному записям.

Этот метод выполняет следующие шаги в указанном порядке:

  1. вызывает beforeDelete(). Если метод возвращает false, он пропустит остальные шаги;
  2. удаляет запись из базы данных;
  3. вызывает afterDelete().

На шаге 1 и 3 события с именами EVENT_BEFORE_DELETE и EVENT_AFTER_DELETE соответственно будут вызваны соответствующими методами.

public integer|false delete ( )
return integer|false

Число строк, удалённых, или false если удаление не удалось по какой-либо причине. Обратите внимание, что возможно число строк, удалённых, равно 0, даже если выполнение удаления прошло успешно.

throws yii\db\StaleObjectException

если включена оптимистическая блокировка и данные, подлежащие удалению, устарели.

throws Exception

в случае, если удаление не удалось.

deleteAll() public static method

Удаляет строки в таблице, используя предоставленные условия.

Например, чтобы удалить всех клиентов, чья статуса равно 3:

Customer::deleteAll('status = 3');

Предупреждение: Если вы не указываете никаких условий, этот метод удалит все строки в таблице.

Обратите внимание, что этот метод не будет вызывать никаких событий. Если вам нужно, чтобы EVENT_BEFORE_DELETE или EVENT_AFTER_DELETE были вызваны, вам нужно сначала найти модели, а затем вызвать delete() для каждой из них. Например, эквивалентом примера выше будет:

$models = Customer::find()->where('status = 3')->all();
foreach ($models as $model) {
    $model->delete();
}

Для большого набора моделей вы можете рассмотреть использование yii\db\ActiveQuery::each(), чтобы сохранить использование памяти в допустимых пределах.

public static integer deleteAll ( $condition = null, $params = [] )
$condition string|array

Условие, которое будет добавлено в часть WHERE SQL-запроса DELETE. Обратитесь к yii\db\Query::where() для получения информации о способе указания этого параметра.

$params array

Параметры (имя => значение) для привязки к запросу.

return integer

Число строк, удалённых

deleteInternal() protected method

Удаляет ActiveRecord без учёта транзакции.

protected integer|false deleteInternal ( )
return integer|false

Число строк, удалённых, или false если удаление не удалось по какой-либо причине. Обратите внимание, что возможно число строк, удалённых, равно 0, даже если выполнение удаления прошло успешно.

throws yii\db\StaleObjectException

equals() public method

Возвращает значение, указывающее, является ли данная активная запись такой же, как текущая.

Сравнение выполняется путём сравнения имён таблиц и значений первичного ключа двух активных записей. Если одна из записей является новой, они также считаются неравными.

public boolean equals ( $record )
$record yii\db\ActiveRecord

Запись для сравнения

return boolean

Являются ли две активные записи ссылками на одну и ту же строку в одной и той же таблице базы данных.

find() public static method

Создаёт экземпляр yii\db\ActiveQueryInterface для целей запроса.

Возвращаемый экземпляр yii\db\ActiveQueryInterface может быть далее настроен путём вызова методов, определённых в yii\db\ActiveQueryInterface, перед вызовом one() или all() для возврата заполненных экземпляров ActiveRecord. Например,

// find the customer whose ID is 1
$customer = Customer::find()->where(['id' => 1])->one();

// find all active customers and order them by their age:
$customers = Customer::find()
    ->where(['status' => 1])
    ->orderBy('age')
    ->all();

Этот метод также вызывается методами yii\db\BaseActiveRecord::hasOne() и yii\db\BaseActiveRecord::hasMany() для создания реляционного запроса.

Вы можете переопределить этот метод, чтобы вернуть настроенный запрос. Например,

class Customer extends ActiveRecord
{
    public static function find()
    {
        // use CustomerQuery instead of the default ActiveQuery
        return new CustomerQuery(get_called_class());
    }
}

Следующий код демонстрирует, как применить стандартное условие для всех запросов:

class Customer extends ActiveRecord
{
    public static function find()
    {
        return parent::find()->where(['deleted' => false]);
    }
}

// Use andWhere()/orWhere() to apply the default condition
// SELECT FROM customer WHERE `deleted`=:deleted AND age>30
$customers = Customer::find()->andWhere('age>30')->all();

// Use where() to ignore the default condition
// SELECT FROM customer WHERE age>30
$customers = Customer::find()->where('age>30')->all();


public static yii\db\ActiveQuery find ( )
return yii\db\ActiveQuery

Новый созданный экземпляр yii\db\ActiveQuery.

findByCondition() protected static method

Находит экземпляр(ы) ActiveRecord по заданному условию.

Этот метод вызывается внутри findOne() и findAll().

protected static yii\db\ActiveQueryInterface findByCondition ( $condition )
$condition mixed

Обратитесь к findOne() для получения объяснения этого параметра

return yii\db\ActiveQueryInterface

Новый созданный экземпляр ActiveQuery.

throws yii\base\InvalidConfigException

если первичный ключ не определён

findBySql() public static method

Создаёт экземпляр yii\db\ActiveQuery с заданным SQL-запросом.

Обратите внимание, что поскольку SQL-запрос уже указан, вызов дополнительных методов модификации запроса (таких как where(), order()) на созданном экземпляре yii\db\ActiveQuery не повлияет. Однако вызов with(), asArray() или indexBy() всё ещё допустим.

Ниже приведён пример:

$customers = Customer::findBySql('SELECT * FROM customer')->all();
public static yii\db\ActiveQuery findBySql ( $sql, $params = [] )
$sql string

SQL-запрос для выполнения

$params array

Параметры для привязки к SQL-запросу во время выполнения.

return yii\db\ActiveQuery

Новый созданный экземпляр yii\db\ActiveQuery

getDb() public static method

Возвращает подключение к базе данных, используемое этим классом AR.

По умолчанию используется компонент приложения "db" в качестве подключения к базе данных. Вы можете переопределить этот метод, если хотите использовать другое подключение к базе данных.

public static yii\db\Connection getDb ( )
return yii\db\Connection

Подключение к базе данных, используемое этим классом AR.

getTableSchema() public static method

Возвращает схему информации таблицы БД, связанной с этим классом AR.

public static yii\db\TableSchema getTableSchema ( )
возврат yii\db\TableSchema

Информация о схеме таблицы БД, связанной с этим классом AR.

бросает yii\base\InvalidConfigException

если таблица для класса AR не существует.

insert() общедоступный метод

Вставляет строку в связанную таблицу базы данных, используя значения атрибутов этой записи.

Этот метод выполняет следующие шаги в указанном порядке:

  1. вызов beforeValidate(), когда $runValidation равно true. Если beforeValidate() возвращает false, остальные шаги будут пропущены;
  2. вызов afterValidate(), когда $runValidation равно true. Если валидация не пройдена, остальные шаги будут пропущены;
  3. вызов beforeSave(). Если beforeSave() возвращает false, остальные шаги будут пропущены;
  4. вставка записи в базу данных. Если это завершается ошибкой, остальные шаги будут пропущены;
  5. вызов afterSave();

На шагах 1, 2, 3 и 5 выше события EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_INSERT и EVENT_AFTER_INSERT будут сгенерированы соответствующими методами.

В базу данных будут вставлены только изменённые значения атрибутов.

Если первичный ключ таблицы имеет автоинкремент и имеет значение null во время вставки, он будет заполнен фактическим значением после вставки.

Например, чтобы вставить запись о клиенте:

$customer = new Customer;
$customer->name = $name;
$customer->email = $email;
$customer->insert();
public boolean insert ( $runValidation = true, $attributes = null )
$runValidation boolean

Выполнять ли валидацию (вызывая validate()) перед сохранением записи. По умолчанию true. Если валидация не пройдена, запись не будет сохранена в базе данных, и этот метод вернёт false.

$attributes array

Список атрибутов, которые необходимо сохранить. По умолчанию null, что означает сохранение всех атрибутов, загруженных из БД.

возврат boolean

Являются ли атрибуты валидными и запись успешно вставлена.

бросает Exception

в случае неудачной вставки.

insertInternal() защищённый метод

Вставляет активную запись в БД без учёта транзакции.

protected boolean insertInternal ( $attributes = null )
$attributes array

Список атрибутов, которые необходимо сохранить. По умолчанию null, что означает сохранение всех атрибутов, загруженных из БД.

возврат boolean

Успешно ли выполнена вставка записи.

isTransactional() общедоступный метод

Возвращает значение, указывающее, является ли указанная операция транзакционной в текущем $scenario.

public boolean isTransactional ( $operation )
$operation integer

Операция для проверки. Возможные значения: OP_INSERT, OP_UPDATE и OP_DELETE.

возврат boolean

Является ли указанная операция транзакционной в текущем $scenario.

loadDefaultValues() общедоступный метод

Загружает значения по умолчанию из схемы таблицы базы данных.

Вы можете вызвать этот метод для загрузки значений по умолчанию после создания нового экземпляра:

// class Customer extends \yii\db\ActiveRecord
$customer = new Customer();
$customer->loadDefaultValues();
public $this loadDefaultValues ( $skipIfSet = true )
$skipIfSet boolean

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

возврат $this

Экземпляр модели.

populateRecord() общедоступный статический метод

Заполняет объект активной записи данными из строки базы данных/хранилища.

Это внутренний метод, предназначенный для вызова для создания объектов активных записей после извлечения данных из базы данных. Он в основном используется yii\db\ActiveQuery для заполнения результатов запроса активными записями.

При ручном вызове этого метода вы должны вызвать afterFind() на созданной записи для активации события afterFind.

public static void populateRecord ( $record, $row )
$record yii\db\BaseActiveRecord

Запись для заполнения. В большинстве случаев это будет экземпляр, созданный ранее методом instantiate().

$row array

Значения атрибутов (имя => значение)

primaryKey() общедоступный статический метод

Возвращает имя(на) первичного ключа для этого класса AR.

Реализация по умолчанию вернёт первичный ключ(и), объявленные в таблице БД, связанной с этим классом AR.

Если таблица БД не объявляет первичный ключ, вы должны переопределить этот метод, чтобы вернуть атрибуты, которые вы хотите использовать в качестве первичных ключей для этого класса AR.

Обратите внимание, что даже для таблицы с единственным первичным ключом должен быть возвращён массив.

public static string[] primaryKey ( )
возврат string[]

Первичные ключи связанной таблицы базы данных.

tableName() общедоступный статический метод

Объявляет имя таблицы базы данных, связанной с этим классом AR.

По умолчанию этот метод возвращает имя класса в качестве имени таблицы, вызывая yii\helpers\Inflector::camel2id() с префиксом yii\db\Connection::$tablePrefix. Например, если yii\db\Connection::$tablePrefix — tbl_, то Customer станет tbl_customer, а OrderItem станет tbl_order_item. Вы можете переопределить этот метод, если таблица имеет другое имя.

public static string tableName ( )
возврат string

Имя таблицы

transactions() общедоступный метод

Объявляет, какие операции БД должны выполняться в транзакции в разных сценариях.

Поддерживаемые операции БД: OP_INSERT, OP_UPDATE и OP_DELETE, которые соответствуют методам insert(), update() и delete() соответственно. По умолчанию эти методы НЕ заключены в транзакцию БД.

В некоторых сценариях для обеспечения целостности данных вы можете заключить некоторые или все из них в транзакции. Вы можете сделать это, переопределив этот метод и вернув операции, которые должны быть транзакционными. Например,

return [
    'admin' => self::OP_INSERT,
    'api' => self::OP_INSERT | self::OP_UPDATE | self::OP_DELETE,
    // the above is equivalent to the following:
    // 'api' => self::OP_ALL,

];

Вышеуказанное объявление указывает, что в сценарии «admin» операция вставки (insert()) должна выполняться в транзакции; а в сценарии «api» все операции должны выполняться в транзакции.

public array transactions ( )
возврат array

Объявления транзакционных операций. Ключи массива — имена сценариев, а значения массива — соответствующие операции транзакции.

update() общедоступный метод

Сохраняет изменения в активной записи в соответствующей таблице базы данных.

Этот метод выполняет следующие шаги в указанном порядке:

  1. вызов beforeValidate(), когда $runValidation является true. Если beforeValidate() возвращает false, остальные шаги будут пропущены;
  2. вызов afterValidate(), когда $runValidation является true. Если валидация не пройдена, остальные шаги будут пропущены;
  3. вызов beforeSave(). Если beforeSave() возвращает false, остальные шаги будут пропущены;
  4. сохранение записи в базе данных. Если это не удается, остальные шаги будут пропущены;
  5. вызов afterSave();

На шагах 1, 2, 3 и 5 события EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_UPDATE и EVENT_AFTER_UPDATE будут подняты соответствующими методами.

В базу данных будут сохранены только измененные значения атрибутов.

Например, для обновления записи клиента:

$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();

Обратите внимание, что обновление может не повлиять ни на одну строку в таблице. В этом случае этот метод вернет 0. По этой причине вы должны использовать следующий код для проверки успешности обновления():

if ($customer->update() !== false) {
    // update successful
} else {
    // update failed
}
public целое число|false update ( $runValidation = true, $attributeNames = null )
$runValidation boolean

Выполнять ли валидацию (вызов validate()) перед сохранением записи. По умолчанию true. Если валидация не пройдена, запись не будет сохранена в базе данных, и этот метод вернет false.

$attributeNames массив

Список атрибутов, которые необходимо сохранить. По умолчанию null, что означает, что будут сохранены все атрибуты, загруженные из БД.

return целое число|false

Количество измененных строк или false, если валидация не пройдена или beforeSave() прервал процесс обновления.

throws yii\db\StaleObjectException

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

throws Исключение

в случае неудачи обновления.

updateAll() public static method

Обновляет всю таблицу, используя предоставленные значения атрибутов и условия.

Например, чтобы изменить статус на 1 для всех клиентов, статус которых равен 2:

Customer::updateAll(['status' => 1], 'status = 2');

Предупреждение: Если вы не укажете никаких условий, этот метод обновит все строки в таблице.

Обратите внимание, что этот метод не будет вызывать никакие события. Если вам нужно, чтобы EVENT_BEFORE_UPDATE или EVENT_AFTER_UPDATE были вызваны, вам нужно сначала найти модели и затем вызвать update() для каждой из них. Например, эквивалентом примера выше будет:

$models = Customer::find()->where('status = 2')->all();
foreach ($models as $model) {
    $model->status = 1;
    $model->update(false); // skipping validation as no user input is involved
}

Для большого набора моделей вы можете рассмотреть использование yii\db\ActiveQuery::each() для поддержания приемлемого использования памяти.

public static целое число updateAll ( $attributes, $condition = '', $params = [] )
$attributes массив

Значения атрибутов (имя-значение) для сохранения в таблице

$condition строка|массив

Условия, которые будут добавлены в часть WHERE запроса UPDATE. Обратитесь к yii\db\Query::where() для указания этого параметра.

$params массив

Параметры (имя => значение) для связывания с запросом.

return целое число

Количество обновленных строк

updateAllCounters() public static method

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

Например, чтобы увеличить возраст всех клиентов на 1:

Customer::updateAllCounters(['age' => 1]);

Обратите внимание, что этот метод не будет вызывать никаких событий.

public static целое число updateAllCounters ( $counters, $condition = '', $params = [] )
$counters массив

Счетчики для обновления (имя атрибута => значение приращения). Используйте отрицательные значения, если хотите уменьшить счетчики.

$condition строка|массив

Условия, которые будут добавлены в часть WHERE запроса UPDATE. Обратитесь к yii\db\Query::where() для указания этого параметра.

$params массив

Параметры (имя => значение) для связывания с запросом. Не используйте имена параметров как :bp0, :bp1, и т.д., потому что они используются внутри этого метода.

return целое число

Количество обновленных строк

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API