Postgresql, select from only table

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
von.hamster
Сообщения: 69
Зарегистрирован: 2013.06.06, 16:07

Postgresql, select from only table

Сообщение von.hamster »

Доброго времени суток.

Проблема следующая ( для первой версии Yii описана в https://github.com/yiisoft/yii/issues/1953 , но там нет решения, только костыль):
есть 2 таблицы postgres, одна наследуется от другой (INHERITS) (items_log наследуется от items, и добавляет новую колонку с датой изменения).

Если вкратце, то в наследуемую таблицу пишется лог изменений первой таблицы триггером, но проблема не в этом.

Теперь в основной таблице items отображаются все записи из items_log (это нормальное поведение наследуемых таблиц).

Для того, чтобы выбрать записи только из таблицы items - необходимо выполнить запрос:

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

select * from ONLY items
Уточню, для выбора элементов использую ActiveDataProvider
Но в билдере запросов не нашел, как можно добавить Only.

Если переопределять tableName - то ошибка при чтении схемы БД
Если указать принудительно ->from(' ONLY ' . self::tableName()), то ONLY - заключается в кавычки и получаем:
SQLSTATE[42P01]: Undefined table: 7 ОШИБКА: отношение "ONLY" не существует
LINE 1: SELECT COUNT(*) FROM "ONLY" "items"
Тот-же эффект, если через yii\db\Expression

Альтернативные решения, в принципе, есть (чистый sql запрос (SqlDataProvider), или просто создать копию таблицы, без наследования).
Но хотелось бы понять - можно ли как-то добавить ONLY?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Postgresql, select from only table

Сообщение samdark »

Скорее всего никак. Это не стандартный синтаксис SQL, а именно его абстрагирует слой AR.
Ответить