Php yii mysql使用带有查询生成器的子查询

Php yii mysql使用带有查询生成器的子查询,php,mysql,yii,Php,Mysql,Yii,我正在用yii构建一个应用程序,我试着使用yii查询生成器以与本指南相同的方式执行sql调用 这是我构建的查询: $diseaseCountSqlQuery = Yii::app()->db->createCommand() ->select ('tbl_disease.ICD10, COUNT(tbl_disease.ICD10) AS disease_count')

我正在用yii构建一个应用程序,我试着使用yii查询生成器以与本指南相同的方式执行sql调用

这是我构建的查询:

$diseaseCountSqlQuery = Yii::app()->db->createCommand()
                                    ->select ('tbl_disease.ICD10, COUNT(tbl_disease.ICD10) AS disease_count')
                                    ->from ('tbl_disease')
                                    ->join ('tbl_symptom_disease', 'ICD10=diseaseCode')
                                    ->where ($symptomsOrQueryArray)
                                    ->group ('ICD10')
                                    ->queryAll();
            //placeholder

            $maxDiseaseCountQuery = Yii::app()->db->createCommand()
                                    ->select ('MAX(disease_count) AS max_disease_count')
                                    ->from ($diseaseCountSqlQuery)
                                    ->queryAll();
            //multiple symptom query
            $diseaseCodes = Yii::app()->db->createCommand()
                            ->select ('ICD10')
                            ->from ($maxDiseaseCountQuery)
                            ->join ($diseaseCountSqlQuery, 'max_disease_count=disease_count')
                            ->queryAll();
问题出现在第二条命令中,特别是第二行:

->from ($diseaseCountSqlQuery)
我得到一个“strpos()期望参数1是字符串,数组给出了”错误


我可以通过将整个mysql命令复制到一个字符串中,然后使用create命令来解决我的问题,但我想使用这种更“优雅”的方式。有人能帮我修复它并解释一下子查询是如何与查询生成器一起工作的吗?谢谢:)

您不能创建这样的子查询。第一个
queryAll
返回一个包含结果的数组。你不能像查询数据库一样查询它。
from()
部分需要字符串形式的参数,而不是数组形式的参数

试着这样做:

Yii::app()->db->createCommand('complete query, including subquery')->queryAll();
或者在执行第一个查询后使用PHP过滤结果

有关createCommand的详细信息:

该错误准确地告诉您问题所在:您试图在需要字符串的位置使用数组。您需要对每个($part){…->from($part)}执行
foreach($diseaseCountSqlQuery as$part){…->
或其他任何操作。好的,那么有没有办法在不同的查询中使用sql命令的结果表?您有没有有用的资源让我更好地理解createCommand的用法?请看一下我添加到答案中的链接。谢谢,我真的很感激