Построитель запросов и префикс таблиц

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Построитель запросов и префикс таблиц

Сообщение Kirill »

Использую построитель SQL-запросов:

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

$teachersStats = Yii::app()->db->createCommand()
    ->select('u.fio, COUNT(*) AS num')
    ->from('lessons l')
    ->join('users u', 'l.user_id=u.id')
    ->group('user_id')
    ->order('num desc'); 
Но при изменении префикса таблиц, строка ->from('lessons l') приходит в негодность и приходится прописывать в ней префикс.
Как подставить префикс в нее, либо делать выборку по-другому, чтобы не менять префикс в контроллере?
Последний раз редактировалось Kirill 2011.07.11, 09:41, всего редактировалось 1 раз.
github profile: https://github.com/kirs
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Построитель запросов и префикс таблиц

Сообщение TM123 »

Что за префикс БД
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Re: Построитель запросов и префикс таблиц

Сообщение Kirill »

Извиняюсь, имелся в виду префикс таблиц. Сообщение поправил
github profile: https://github.com/kirs
Roms
Сообщения: 50
Зарегистрирован: 2011.01.29, 22:39

Re: Построитель запросов и префикс таблиц

Сообщение Roms »

http://yiiframework.ru/doc/guide/ru/database.dao -> cамый низ страницы -> "Использование префикса таблиц"

не то?

>from('lessons l') -> >from('{{lessons}} l')
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Построитель запросов и префикс таблиц

Сообщение TM123 »

ну для надежности, вместо алиаса таблицы можно указать ее полное имя.

lesson.user_id=user.id
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Re: Построитель запросов и префикс таблиц

Сообщение Kirill »

Roms писал(а):http://yiiframework.ru/doc/guide/ru/database.dao -> cамый низ страницы -> "Использование префикса таблиц"

не то?

>from('lessons l') -> >from('{{lessons}} l')
Спасибо!
TM123 писал(а):ну для надежности, вместо алиаса таблицы можно указать ее полное имя.

lesson.user_id=user.id
Разве есть разница, использовать алиас или нет?
github profile: https://github.com/kirs
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Построитель запросов и префикс таблиц

Сообщение TM123 »

Очень большая, по имени таблицы вы можете обратиться к ней на прямую и оно всегда есть, а alias нужно еще определить самостоятельно.
В целом основная задача alias'a - это дать возможность различить одну и ту же таблицу таблицу приджоиненную в запросе более одного раза, например

select * from a a
inner join b b1 on b1.id=a.id1
inner join b b2 on b2.id=a.id2
where a.id>10 and b1.name=''

позже alias'ы стали использовать для удобства написания и чтения запросов, проще написать и прочесть несколько раз abc, чем mega_table_from_super_user
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Re: Построитель запросов и префикс таблиц

Сообщение Kirill »

TM123 писал(а):позже alias'ы стали использовать для удобства написания и чтения запросов, проще написать и прочесть несколько раз abc, чем mega_table_from_super_user
Как раз для этого использую. В чем повышение надежности, при указании полного имени таблицы?
github profile: https://github.com/kirs
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Построитель запросов и префикс таблиц

Сообщение Stamm »

Попробовал на mysql, не работает обращение по названию таблицы при использовании алиаса.

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

SELECT *
FROM table AS t
WHERE table.id > 2
Аватара пользователя
Kirill
Сообщения: 128
Зарегистрирован: 2010.08.28, 22:34

Re: Построитель запросов и префикс таблиц

Сообщение Kirill »

Stamm писал(а):Попробовал на mysql, не работает обращение по названию таблицы при использовании алиаса.

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

SELECT *
FROM table AS t
WHERE table.id > 2
Ожидаемое поведение :)
github profile: https://github.com/kirs
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Построитель запросов и префикс таблиц

Сообщение TM123 »

ну да, а table разве не зарезервированное слово, его надо в ` брать.
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Построитель запросов и префикс таблиц

Сообщение Stamm »

Это я на table поменял уже после выполнения.
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: Построитель запросов и префикс таблиц

Сообщение Johnatan »

На моей памяти в MySQL всегда так было, что при присвоении таблице алиаса она уже не может вызываться по своему оригинальному имени, а только по алиасу.
Конференция: yii@conference.jabber.ru
Ответить