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