Browse Source

Docs for ActiveRecord typecast added

tags/2.0.10
Klimov Paul 8 years ago
parent
commit
bcdb53cb99
  1. 24
      docs/guide-ru/db-active-record.md
  2. 22
      docs/guide/db-active-record.md

24
docs/guide-ru/db-active-record.md

@ -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 объектами, инициируя вставку или обновление данных для

22
docs/guide/db-active-record.md

@ -458,6 +458,28 @@ $customer->loadDefaultValues();
```
### Attributes Typecasting <span id="attributes-typecasting"></span>
Being populated by query results [[yii\db\ActiveRecord]] performs automatic typecast for its attribute values, using
information from [database table schema](db-dao.md#database-schema). This allows data retrieved from table column
declared as integer to be populated in ActiveRecord instance with PHP integer, boolean with boolean and so on.
However, typecasting mechanism has several limitations:
* Float values are not be converted and will be represented as strings, otherwise they may loose precision.
* Conversion of the integer values depends on the integer capacity of the operation system you use. In particular:
values of column declared as 'unsigned integer' or 'big integer' will be converted to PHP integer only at 64-bit
operation system, while on 32-bit ones - they will be represented as strings.
Note that attribute typecast is performed only during populating ActiveRecord instance from query result. There is no
automatic conversion for the values loaded from HTTP request or set directly via property access.
The table schema will also be used while preparing SQL statements for the ActiveRecord data saving, ensuring
values are bound to the query with correct type. However, ActiveRecord instance attribute values will not be
converted during saving process.
> Tip: you may use [[yii\behaviors\AttributeTypecastBehavior]] to facilitate attribute values typecasting
on ActiveRecord validation or saving.
### Updating Multiple Rows <span id="updating-multiple-rows"></span>
The methods described above all work on individual Active Record instances, causing inserting or updating of individual

Loading…
Cancel
Save