这是控制器中的代码
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。