Browse Source

fix guide rus doc

tags/2.0.6
Vladimir Vyachin 9 years ago
parent
commit
55885c5e51
  1. 24
      docs/guide-ru/db-query-builder.md

24
docs/guide-ru/db-query-builder.md

@ -1,7 +1,7 @@
Построитель запросов
====================
Построеный поверх [DAO](db-dao.md), построитель запросов позволяет конструировать SQL выражения в программируемом и
Построенный поверх [DAO](db-dao.md), построитель запросов позволяет конструировать SQL выражения в программируемом и
независимом от СУБД виде. В сравнении с написанием чистого SQL, использование построителя помогает вам писать
более читаемый связанный с SQL код и генерировать более безопасные SQL выражения.
@ -86,7 +86,7 @@ $query->select(['user_id' => 'user.id', 'email']);
$query->select(["CONCAT(first_name, ' ', last_name) AS full_name", 'email']);
```
Начиная с версии 2.0.1, вы также можете использовать подзапросы. Вы должны указывть каждый подзапрос в выражении как
Начиная с версии 2.0.1, вы также можете использовать подзапросы. Вы должны указывать каждый подзапрос в выражении как
объект [[yii\db\Query]]. Например:
```php
@ -169,7 +169,7 @@ $query->where('status=:status', [':status' => $status]);
```
Не встраивайте переменные непосредственно в условие, особенно если значение переменной получено от пользователя,
потому что это делает ваше приложение подверженым атакам через SQL инъекции.
потому что это делает ваше приложение подверженным атакам через SQL инъекции.
```php
// Опасность! Не делайте так если вы не уверены, что $status это действительно число.
@ -200,7 +200,7 @@ $query->where([
]);
```
Как вы можете видеть, построитель запросов достаточно умён, чтобы правильно обрабатывать значения NULL или массивов.
Как вы можете видеть, построитель запросов достаточно умен, чтобы правильно обрабатывать значения NULL или массивов.
Вы также можете использовать подзапросы:
@ -303,9 +303,9 @@ if (!empty($search)) {
#### Условия для фильтров <span id="filter-conditions"></span>
Когда условие `WHERE` формируется на основе пользовательского ввода, обычно хочется проигнорироват незаданные значения.
Когда условие `WHERE` формируется на основе пользовательского ввода, обычно хочется проигнорировать не заданные значения.
Например, в форме поиска, которая позволяет осуществлять поиск по имени пользователя или email, вы хотели бы игнорировать
username/email условие, если пользователь ничего не ввёл в поле ввода. Вы можете достич этого используя метод
username/email условие, если пользователь ничего не ввёл в поле ввода. Вы можете достичь этого используя метод
[[yii\db\Query::filterWhere()|filterWhere()]].
```php
@ -316,13 +316,13 @@ $query->filterWhere([
]);
```
Единственное отличие межде [[yii\db\Query::filterWhere()|filterWhere()]] и [[yii\db\Query::where()|where()]]
Единственное отличие между [[yii\db\Query::filterWhere()|filterWhere()]] и [[yii\db\Query::where()|where()]]
заключается в игнорировании пустых значений переданных в условие в [форме массива](#hash-format). Таким образом
если `$email` будет пустым, а `$username` нет, то приведённый выше код сформирует `...WHERE username=:username`.
> Информация: значение признаётся пустым, если это null, пустой массив, пустая строка или строка состоящая из одних пробельных символов.
Таже вместо [[yii\db\Query::andWhere()|andWhere()]] и [[yii\db\Query::orWhere()|orWhere()]], вы можете использовать
Также вместо [[yii\db\Query::andWhere()|andWhere()]] и [[yii\db\Query::orWhere()|orWhere()]], вы можете использовать
[[yii\db\Query::andFilterWhere()|andFilterWhere()]] и [[yii\db\Query::orFilterWhere()|orFilterWhere()]]
для добавления дополнительных условий фильтрации.
@ -421,7 +421,7 @@ $query->limit(10)->offset(20);
Если вы определяете неправильный limit или offset (например отрицательное значение), они будут проигнорированы.
> Информация: Для СУБД, которые не поддерживают `LIMIT` и `OFFSET` (такие как MSSQL), построитель запросов будет
генерировать SQL выражения, которые эмулируют поведение `LIMIT`/`OFFSET`.
генерировать SQL выражения, которые эмулирует поведение `LIMIT`/`OFFSET`.
### [[yii\db\Query::join()|join()]] <span id="join"></span>
@ -491,7 +491,7 @@ $query1->union($query2);
[[yii\db\Query]] предоставляет целый набор методов для разных вариантов выборки:
- [[yii\db\Query::all()|all()]]: возвращает массив строк, какждая из которых это ассоциативный массив пар ключ-значение.
- [[yii\db\Query::all()|all()]]: возвращает массив строк, каждая из которых это ассоциативный массив пар ключ-значение.
- [[yii\db\Query::one()|one()]]: возвращает первую строку запроса.
- [[yii\db\Query::column()|column()]]: возвращает первый столбец результата.
- [[yii\db\Query::scalar()|scalar()]]: возвращает скалярное значение первого столбца первой строки результата.
@ -518,7 +518,7 @@ $row = (new \yii\db\Query())
```
> Примечание: метод [[yii\db\Query::one()|one()]] вернёт только первую строку результата запроса. Он НЕ добавляет
`LIMIT 1` в генерируемый SQL. Это хорошо и предпочтительно если вы знаете, что запрос вернёт только одны или несколько
`LIMIT 1` в генерируемый SQL. Это хорошо и предпочтительно если вы знаете, что запрос вернёт только одну или несколько
строк данных (например, при запросе по первичному ключу). Однако, если запрос потенциально может вернут много
строк данных, вы должны вызвать `limit(1)` для повышения производительности, Например:
`(new \yii\db\Query())->from('user')->limit(1)->one()`.
@ -542,7 +542,7 @@ $count = (new \yii\db\Query())
* Создаёт объект [[yii\db\Command]] с сгенерированным SQL запросом;
* Вызывается выбирающий метод (например `queryAll()`) из [[yii\db\Command]] для выполнения SQL запроса и извлечения данных.
Иногда вы можете захотеть увидеть или испрользовать SQL запрос построенный из объекта [[yii\db\Query]]. Этой цели можно
Иногда вы можете захотеть увидеть или использовать SQL запрос построенный из объекта [[yii\db\Query]]. Этой цели можно
добиться с помощью следующего кода:
```php

Loading…
Cancel
Save