|
|
|
@ -240,7 +240,7 @@ $email = $customer->email;
|
|
|
|
|
регистра. Yii автоматически объявляет для каждого столбца связной таблицы атрибут в Active Record. Вы НЕ должны |
|
|
|
|
переопределять какие-либо из этих атрибутов. |
|
|
|
|
|
|
|
|
|
Атрибуты Active Record названы в соответствии с именами столбцов таблицы, и, если столбцы вашей таблицы именуются через |
|
|
|
|
Атрибуты Active Record названы в соответствии с именами столбцов таблицы. Если столбцы вашей таблицы именуются через |
|
|
|
|
нижнее подчёркивание, то может оказаться, что вам придётся писать PHP-код вроде этого: `$customer->first_name` - в нём |
|
|
|
|
будет использоваться нижнее подчёркивание для разделения слов в названиях атрибутов. Если вы обеспокоены единообразием |
|
|
|
|
стиля кодирования, вам придётся переименовать столбцы вашей таблицы соответствующим образом (например, назвать столбцы |
|
|
|
@ -650,8 +650,8 @@ class Customer extends ActiveRecord
|
|
|
|
|
данных обновляется несколькими пользователями. Например, пользователь A и пользователь B одновременно редактируют одну и |
|
|
|
|
ту же wiki-статью. После того, как пользователь A сохранит свои изменения, пользователь B нажимает на кнопку "Сохранить" |
|
|
|
|
в попытке также сохранить свои изменения. Т.к. пользователь B работал с фактически-устаревшей версией статьи, было бы |
|
|
|
|
неплохо иметь способ предотвратить сохранение его варианта статьи и показать ему некоторое сообщение с подсказкой о |
|
|
|
|
произошедшем. |
|
|
|
|
неплохо иметь способ предотвратить сохранение его варианта статьи и показать ему некоторое сообщение с подсказкой о том, |
|
|
|
|
что произошло. |
|
|
|
|
|
|
|
|
|
Оптимистическая блокировка решает вышеприведённую проблему за счёт использования отдельного столбца для сохранения |
|
|
|
|
номера версии каждой строки данных. Когда строка данных сохраняется с использованием устаревшего номера версии, |
|
|
|
@ -759,8 +759,8 @@ class Order extends ActiveRecord
|
|
|
|
|
ключи массива - столбцы связанных данных. |
|
|
|
|
|
|
|
|
|
Есть простой способ запомнить это правило: как вы можете увидеть в примере выше, столбец связной Active Record |
|
|
|
|
указывается сразу же после указания самого класса Active Record. Вы видите, что `customer_id` - это атрибут класса |
|
|
|
|
`Order`, а `id` - атрибут класса `Customer`. |
|
|
|
|
указывается сразу же после указания самого класса Active Record. Вы видите, что `customer_id` - это свойство класса |
|
|
|
|
`Order`, а `id` - свойство класса `Customer`. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Доступ к связным данным <span id="accessing-relational-data"></span> |
|
|
|
@ -1014,7 +1014,7 @@ $customers = Customer::find()->with([
|
|
|
|
|
данных, наложив на него дополнительное условие выборки статуса заказов. |
|
|
|
|
|
|
|
|
|
> Примечание: Если вы вызываете метод [[yii\db\Query::select()|select()]] в процессе жадной загрузки связей, вы должны |
|
|
|
|
убедиться, что столбцы участвующие в объявлении связей будут выбраны. Иначе связные модели будут загружены |
|
|
|
|
убедиться, что будут выбраны столбцы, участвующие в объявлении связей. Иначе связные модели будут загружены |
|
|
|
|
неправильно. Например: |
|
|
|
|
```php |
|
|
|
|
$orders = Order::find()->select(['id', 'amount'])->with('customer')->all(); |
|
|
|
@ -1102,8 +1102,8 @@ $customers = Customer::find()->joinWith([
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Вышеприведённый запрос вернёт *всех* покупателей и для каждого покупателя вернёт все активные заказы. Заметьте, что это |
|
|
|
|
поведение отличается от нашего предыдущего примера, в котором возвращались только покупатели как минимум с одним |
|
|
|
|
активным заказ. |
|
|
|
|
поведение отличается от нашего предыдущего примера, в котором возвращались только покупатели, у которых был как минимум |
|
|
|
|
один активный заказ. |
|
|
|
|
|
|
|
|
|
> Информация: Когда в объекте [[yii\db\ActiveQuery]] указано условие выборки с помощью метода |
|
|
|
|
[[yii\db\ActiveQuery::onCondition()|onCondition()]], это условие будет размещено в конструкции `ON`, если запрос |
|
|
|
|