Yii2网站连接远程数据库获取产品时出现类型转换报错咨询
解决Yii2远程数据库查询的类型转换错误
嘿,我来帮你搞定这个问题!你遇到的错误Object of class yii\db\Query could not be converted to string,根源是写法上的小问题:你把Query对象直接传给了createCommand()方法,但这个方法如果传参数的话,要求的是SQL字符串,而不是Query实例,所以PHP没法把对象转成字符串,就报错了。
给你两种正确的写法,任选其一就行:
方法一:直接用Query对象指定远程DB组件
这种写法最简洁,和你本地查询的风格也最接近:
$query = (new \yii\db\Query()) ->select(['product_sku']) ->from('ntc7r_virtuemart_products') ->where(['virtuemart_product_id' => $product_id]); // 关键:调用Query的createCommand时传入远程数据库组件db2 $productSkuList = $query->createCommand(Yii::$app->db2)->queryAll();
方法二:通过DB组件构建命令(分步写法)
如果你习惯先拿到DB组件再处理,也可以这么写:
$query = (new \yii\db\Query()) ->select(['product_sku']) ->from('ntc7r_virtuemart_products') ->where(['virtuemart_product_id' => $product_id]); // 先从Query中提取SQL语句和绑定参数,再传给db2的createCommand $command = Yii::$app->db2->createCommand($query->sql, $query->params); $productSkuList = $command->queryAll();
另外别忘了检查你的db2组件配置是否正确!要在项目的配置文件(比如config/web.php或config/db.php)里,把远程数据库的主机地址、用户名、密码、数据库名这些信息配置好,否则即使写法正确也无法连接远程库哦。
内容的提问来源于stack exchange,提问作者Dannik
相关产品推荐
相关产品推荐

