CDbCriteria, Join, $model->count()

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
MiReQ
Сообщения: 31
Зарегистрирован: 2012.09.18, 10:50

CDbCriteria, Join, $model->count()

Сообщение MiReQ »

Добрый день всем.

Наткнулся на такой... недочет, что-ли...

Допустим, есть у нас 2 таблицы (модели):
`t1` (Model1):
  • `id`
`t2` (Model2):
  • `id`
    `parent_id`
    `some_condition_field`
И хотим мы получить количество Model1, отфильтрованных каким-то образом по Model2.
В результате, получаем SQL вида:

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

SELECT COUNT(*) FROM (
	SELECT * FROM `t1` `t`
	INNER JOIN `t2` ON `t2`.`parent_id` = `t`.`id`
	WHERE `t2`.`some_condition_field` = 'some_condition'
	GROUP BY `t`.`id`
) `t0`;
В результате вылезает ошибка вида:

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

Column already exists: 1060 Duplicate column name 'id'
, так как вложенный селект вернет таблицу с полями:
  • `id`
    `id`
    `parent_id`
    `some_condition_field`
Вот как-то так...

P.S. Особо не тестил, просто такой случай всплыл.
P.P.S. Просто замечание, частный рецепт я и сам найду.
Аватара пользователя
sluchainiyznak
Сообщения: 617
Зарегистрирован: 2013.05.19, 17:51
Откуда: ХМАО-Югра, г. Сургут
Контактная информация:

Re: CDbCriteria, Join, $model->count()

Сообщение sluchainiyznak »

может быть стоит сделать select => false для дочерней модели, раз вам все-равно поля не нужны, тогда, если я не ошибаюсь, и конфликта не будет
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: CDbCriteria, Join, $model->count()

Сообщение lancedevnull »

не может быть, сервер бд должен сам изменить второе поле добавив индекс, а если бы это было правда то не работала бы вообще выборка по связям ибо как правило везде примари id
Ответить