В настоящее время у меня есть модель, которая связана с базой данных оракула.Это работает хорошо, и я могу выполнять запросы без проблем.
Однако следующее приводит к тому, что база данных oracle отклоняет запрос:
$subquery = mytable::find()->where(['status'=>'success']);
$mainQuery = new Query();
$mainQuery->select([...])
->from(['subQ'=>$subquery])
->where(...
В приведенном выше примере $ subquery работает нормально (если я запускаю его сам), но комбинацияотклонено базой данных Oracle
Я думаю, проблема в том, что "new Query ()" вызывает запрос mysql, а не запрос oci.Как создать экземпляр Query () как запрос oci?
Любая помощь приветствуется.
Пример
Я создал следующий простой запрос для демонстрации проблемы:
$subQuery = Study::find()->limit(10);
$mainQuery = new Query;
$mainQuery->select(["*"])->from(['subQ'=>$subQuery]);
Класс Study настроен для вызова базы данных Oracle.
Когда вышеупомянутый запрос выполняется, я получаю следующее сообщение из базы данных Oracle:
SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'username'@'db.url' for table 'study'
The SQL being executed was: SELECT * FROM (SELECT * FROM `SCHEMA`.`STUDY` LIMIT 10) `subQ`
Если я выполняю только $ subQuery, все в порядке и возвращается 10 записей.Я не эксперт по запросам Oracle, но мне кажется, что отклоняемый запрос использует синтаксис MySQl, а не синтаксис оракула.Это означает, что новый класс Query переопределяет запрос Study.
Как заставить новый запрос использовать синтаксис oci?
Большое спасибо