|
|
|
@ -466,6 +466,30 @@ $customer->loadDefaultValues();
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Приведение типов атрибутов <span id="attributes-typecasting"></span> |
|
|
|
|
|
|
|
|
|
При заполнении результатами запроса [[yii\db\ActiveRecord]] производит автоматическое приведение типов для значений |
|
|
|
|
атрибутов на основе информации из [схемы базы данны](db-dao.md#database-schema). Это позволяет данным, полученным из |
|
|
|
|
колонки таблицы объявленной как целое, заноситься в экземпляр ActiveRecord как значение целого типа PHP, булево как |
|
|
|
|
булево и т.д. |
|
|
|
|
Однако, механизм приведения типов имеет несколько ограничений: |
|
|
|
|
|
|
|
|
|
* Числа с плавающей точкой не будут обработаны, а будут представленны как строки, в противном случае они могут потерять точность. |
|
|
|
|
* Ковертация целх чисел завист от разрядности используемой операциооной системы. В частности: значения колонок, объявленных |
|
|
|
|
как 'unsigned integer' или 'big integer' будут приведены к целому типу PHP только на 64-х разрядных системах, в то время |
|
|
|
|
как на 32-х разрядных - они будут представленны как строки. |
|
|
|
|
|
|
|
|
|
Имейте в виду, что преобразование типов производиться только в момент заполнения экземпляра ActiveRecord данными из результата |
|
|
|
|
запроса. При заполнении данных из HTTP запроса или непосредственно через механизм доступа к полям - автоматическая конвертация |
|
|
|
|
не производтся. |
|
|
|
|
Схема таблицы базы данных также используется при построении SQL запроса для сохранения данных ActiveRecord, обеспечивая |
|
|
|
|
соответсвие типов связываемых параметров в запросе. Однако, над атрибутами объекта ActiveRecord не будет производиться |
|
|
|
|
приведение типов в процессе сохранения. |
|
|
|
|
|
|
|
|
|
> Совет: вы можете использовать поведение [[yii\behaviors\AttributeTypecastBehavior]] для того, чтобы производить |
|
|
|
|
приведение типов для ActiveRecord во время валидации или сохранения. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Обновление нескольких строк данных <span id="updating-multiple-rows"></span> |
|
|
|
|
|
|
|
|
|
Методы, представленные выше, работают с отдельными Active Record объектами, инициируя вставку или обновление данных для |
|
|
|
|