Yii2 ActiveRecord: выбор из представления

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Yii2 ActiveRecord: выбор из представления

Сообщение GHopper »

Приветствую.

Имею сложный запрос с множеством связанных таблиц. Решил запилить представление в миграции. Теперь из модели пытаюсь построить запрос к этому представлению, но получаю сообщение
relation does not exist
. Мне по этому предствлению не нужна модель и связи никакие не нужны. Мне просто нужно получить набор id, по которым потом запрашивать модели и работать с ними. Просто не люблю много связей и вычислыемых полей в одном запросе.

Аватара пользователя
Alexum
Сообщения: 681
Зарегистрирован: 2016.09.26, 10:00

Re: Yii2 ActiveRecord: выбор из представления

Сообщение Alexum »

Покажите запрос.

GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Re: Yii2 ActiveRecord: выбор из представления

Сообщение GHopper »

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

$query = (new \yii\db\Query())
            ->from('MyCustomVIewName');
Ошибка:

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

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "MyCustomVIewName" does not exist
LINE 1: SELECT COUNT(*) FROM "MyCustomVIewName"
...
При этом в терменали

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

SELECT * FROM MyCustomViewName
работает и выдает результат

Аватара пользователя
Alexum
Сообщения: 681
Зарегистрирован: 2016.09.26, 10:00

Re: Yii2 ActiveRecord: выбор из представления

Сообщение Alexum »

Вы точно создали представление в той же БД, что и прописано в подключении yii2?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 ActiveRecord: выбор из представления

Сообщение zelenin »

MyCustomVIewName !== MyCustomViewName

GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Re: Yii2 ActiveRecord: выбор из представления

Сообщение GHopper »

Во-первых, представление создается через миграции. Во-вторых, проверил все еще раз - БД одна, вьюха в ней создана, вьюха выводит результат, если ее вызывать в ручном режиме.

Название вьюхи скопировал из миграции и еще раз все проверил. Не должно здесь быть тупой опечатки.

Попробовал поэкспериментировать:

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

        
        $connection = Yii::$app->getDb();
        $command = $connection->createCommand("select * from MyCustomViewName");
        $result = $command->queryAll();
и поймал в $result массив записей.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 ActiveRecord: выбор из представления

Сообщение zelenin »

GHopper писал(а):
2018.07.26, 17:51
Не должно здесь быть тупой опечатки.
не должно быть, но ошибка приведенная вами указывает на это.

GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Re: Yii2 ActiveRecord: выбор из представления

Сообщение GHopper »

zelenin писал(а):
2018.07.26, 17:59
GHopper писал(а):
2018.07.26, 17:51
Не должно здесь быть тупой опечатки.
не должно быть, но ошибка приведенная вами указывает на это.
Как по мне, так ошибка о том, что связи на вьюху нет:

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

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "MyCustomVIewName" does not exist
LINE 1: SELECT COUNT(*) FROM "MyCustomVIewName"
ActiveRecord работает с моделями, а на мою вьюху модели нет. Поэтому и ошибка, которая прямо об этом говорит.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 ActiveRecord: выбор из представления

Сообщение zelenin »

но вы опечатку исправили?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 ActiveRecord: выбор из представления

Сообщение zelenin »

GHopper писал(а):
2018.07.26, 18:50
ActiveRecord работает с моделями, а на мою вьюху модели нет.
но ActiveRecord здесь причем?
Поэтому и ошибка, которая прямо об этом говорит.
ошибка прямо говорит что в БД нет сущности с таким именем. что логично, ведь у вас опечатка.

GHopper
Сообщения: 83
Зарегистрирован: 2017.06.05, 10:53

Re: Yii2 ActiveRecord: выбор из представления

Сообщение GHopper »

zelenin писал(а):
2018.07.26, 19:08
GHopper писал(а):
2018.07.26, 18:50
ActiveRecord работает с моделями, а на мою вьюху модели нет.
но ActiveRecord здесь причем?
Поэтому и ошибка, которая прямо об этом говорит.
ошибка прямо говорит что в БД нет сущности с таким именем. что логично, ведь у вас опечатка.
А ведь действительно вы правы!
В миграции использую название в CamelCase, а в БД представление создано строчными. И если консоль принимает и так и эдак, то AR нужно указывать точное совпадение.

Спасибо за дельные замечания!

Ответить