Quoting Table and Column Names

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Quoting Table and Column Names

Сообщение S c »

http://www.yiiframework.com/doc-2.0/gui ... lumn-names
вопрос - так нужно для QueryBuilder-а делать?

Код: Выделить всё

"SELECT COUNT([[id]]) FROM {{employee}}"
Судя по исходникам - да, но в документации указано об этом только для $connection->createCommand().
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Quoting Table and Column Names

Сообщение zelenin »

все db-компоненты yii используют Connection.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Quoting Table and Column Names

Сообщение maleks »

Для имен таблиц: надо если префикс используется.

Для имен столбцов:
Для всякого сырого sql, в т.ч. того что в Expression - надо, для предусмотренных форматов - нет, QueryBuilder экранирует сам (пример - QueryBuilder::BuildSelect)
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Quoting Table and Column Names

Сообщение S c »

maleks писал(а): 2017.10.19, 08:12 Для имен таблиц: надо если префикс используется.

Для имен столбцов:
Для всякого сырого sql, в т.ч. того что в Expression - надо, для предусмотренных форматов - нет, QueryBuilder экранирует сам (пример - QueryBuilder::BuildSelect)
именно этот момент и интересовал, спасибо
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Quoting Table and Column Names

Сообщение S c »

если что то типа

Код: Выделить всё

->where(['id' => $model->id])
тогда ясно, что экранирует.
А если

Код: Выделить всё

->where("id = " . $model->id)
тут нужно использовать "[[field]]" синтаксис, или Query Builder и в таком варианте, сам обернет запрос как нужно? регулярками к примеру..
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Quoting Table and Column Names

Сообщение maleks »

S c писал(а): 2017.10.19, 10:29 А если

Код: Выделить всё

->where("id = " . $model->id)
тут нужно использовать "[[field]]" синтаксис, или Query Builder и в таком варианте, сам обернет запрос как нужно? регулярками к примеру..
Нет, сам не обернет, это у вас уже свой кусок SQL.
Всегда можете посмотреть что за SQL у вас получится:

Код: Выделить всё

var_dump($query->createCommand()->getRawSql());
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Quoting Table and Column Names

Сообщение S c »

maleks писал(а): 2017.10.19, 10:37 Нет, сам не обернет, это у вас уже свой кусок SQL.
Всегда можете посмотреть что за SQL у вас получится:

Код: Выделить всё

var_dump($query->createCommand()->getRawSql());
getRawSql() вернет не итоговый запрос, а подготовленный (в смысле с [[]] и {{}} символами?), который в последствии еще разок обработается фреймворком?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Quoting Table and Column Names

Сообщение maleks »

итоговый
Yii2 universal module sceleton - for basic and advanced templates
Ответить