Класс 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 |
События
Константы
| Константа | Значение | Описание | Определено в |
|---|---|---|---|
| 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
Удаляет строку таблицы, соответствующую этому активному записям.
Этот метод выполняет следующие шаги в указанном порядке:
- вызывает beforeDelete(). Если метод возвращает
false, он пропустит остальные шаги; - удаляет запись из базы данных;
- вызывает afterDelete().
На шаге 1 и 3 события с именами EVENT_BEFORE_DELETE и EVENT_AFTER_DELETE соответственно будут вызваны соответствующими методами.
| public integer|false delete ( ) | ||
|---|---|---|
| return | integer|false |
Число строк, удалённых, или |
| 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 |
Число строк, удалённых, или |
| 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() общедоступный метод
Вставляет строку в связанную таблицу базы данных, используя значения атрибутов этой записи.
Этот метод выполняет следующие шаги в указанном порядке:
- вызов beforeValidate(), когда
$runValidationравноtrue. Если beforeValidate() возвращаетfalse, остальные шаги будут пропущены; - вызов afterValidate(), когда
$runValidationравноtrue. Если валидация не пройдена, остальные шаги будут пропущены; - вызов beforeSave(). Если beforeSave() возвращает
false, остальные шаги будут пропущены; - вставка записи в базу данных. Если это завершается ошибкой, остальные шаги будут пропущены;
- вызов 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()) перед сохранением записи. По умолчанию |
| $attributes | array |
Список атрибутов, которые необходимо сохранить. По умолчанию |
| возврат | boolean |
Являются ли атрибуты валидными и запись успешно вставлена. |
| бросает | Exception |
в случае неудачной вставки. |
insertInternal() защищённый метод
Вставляет активную запись в БД без учёта транзакции.
| protected boolean insertInternal ( $attributes = null ) | ||
|---|---|---|
| $attributes | array |
Список атрибутов, которые необходимо сохранить. По умолчанию |
| возврат | 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 |
Сохранять ли существующее значение. Это установит значения по умолчанию только для атрибутов, которые |
| возврат | $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() общедоступный метод
Сохраняет изменения в активной записи в соответствующей таблице базы данных.
Этот метод выполняет следующие шаги в указанном порядке:
- вызов beforeValidate(), когда
$runValidationявляетсяtrue. Если beforeValidate() возвращаетfalse, остальные шаги будут пропущены; - вызов afterValidate(), когда
$runValidationявляетсяtrue. Если валидация не пройдена, остальные шаги будут пропущены; - вызов beforeSave(). Если beforeSave() возвращает
false, остальные шаги будут пропущены; - сохранение записи в базе данных. Если это не удается, остальные шаги будут пропущены;
- вызов 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()) перед сохранением записи. По умолчанию |
| $attributeNames | массив |
Список атрибутов, которые необходимо сохранить. По умолчанию |
| 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 | массив |
Параметры (имя => значение) для связывания с запросом. Не используйте имена параметров как |
| 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