Страница 1 из 1

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

Добавлено: 2018.07.26, 15:43
GHopper
Приветствую.

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

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

Добавлено: 2018.07.26, 16:36
Alexum
Покажите запрос.

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

Добавлено: 2018.07.26, 16:46
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
работает и выдает результат

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

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

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

Добавлено: 2018.07.26, 17:30
zelenin
MyCustomVIewName !== MyCustomViewName

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

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

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

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

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

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

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

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

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

Добавлено: 2018.07.26, 18:50
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 работает с моделями, а на мою вьюху модели нет. Поэтому и ошибка, которая прямо об этом говорит.

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

Добавлено: 2018.07.26, 19:06
zelenin
но вы опечатку исправили?

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

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

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

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

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