在Yii2中使db查询(包括'join'表达式)到oracle,无法获取任何结果

时间:2016-10-19 07:31:28

标签: php oracle yii2 oci

这是控制器中的代码

public function actionIndex()
{

    $result = new RestResult();
    try {
        $query = TaskMgr::find()
            ->join('INNER JOIN', EqpInfo::tableName(), EqpInfo::tableName() . '.EQP_COD =' . TaskMgr::tableName() . '.EQP_COD')

            ->select([TaskMgr::tableName() . '.EQP_COD', TaskMgr::tableName() . '.TASK_STA', TaskMgr::tableName() . '.TASK_DATE', TaskMgr::tableName() . '.BUSINESS_NATURE', EqpInfo::tableName() . '.EQP_SORT_NAME', EqpInfo::tableName() . '.EQP_VART_NAME', EqpInfo::tableName() . '.USE_UNT_NAME', EqpInfo::tableName() . '.USE_UNT_ADDR', EqpInfo::tableName() . '.INST_AREA_NAME', EqpInfo::tableName() . '.MAKE_UNT_NAME']);
        $result->content = $query->asArray(true)->all();
    } catch (Exception $e) {
        $result->error = $e->getMessage();
        $result->content = [];
        $result->message = ["error" => Yii::t('rest', "Server error.")];
    } finally {
        return $result;
    }
}

我得到了空数组。as pic 1,我认为这可能是QueryBuilder的问题,所以我只是在索引操作中执行sql脚本:

public function actionIndex()
{
    $y = Yii::$app->get('db2')->createCommand('SELECT * FROM "TB_TASK_MGR" INNER JOIN "V_EQPINFO" ON "V_EQPINFO".EQP_COD ="TB_TASK_MGR".EQP_COD')
        ->queryAll();
    return var_dump($y);
}

我又得到了一个空数组。 但是当我在Navicat中运行sql脚本时,我得到了一些行。as pic 2,这意味着sql结果不为空。我认为我的DBConnection可能存在一些问题,所以我尝试将操作更改为:

public function actionIndex()
{
    $y = Yii::$app->get('db2')->createCommand('SELECT * FROM "TB_TASK_MGR"')
        ->queryAll();
    return var_dump($y);
}

我得到了一些行,这意味着DBConnection没有问题,唯一的区别是'join'表达式。

我使用xampp部署站点,php版本是5.6.23。 oracle客户端安装和远程oracle版本是11g。 php.ini config oci as

extension=php_pdo_oci.dll

请帮我看看为什么会这样,是因为php_pdo_oci.dll中的一些错误?以及如何在yii2中使用'join'来执行sql到oracle。

0 个答案:

没有答案