gpt4 book ai didi

php - yii mysql 通过查询生成器使用子查询

转载 作者:行者123 更新时间:2023-11-29 12:54:26 25 4
gpt4 key购买 nike

我正在使用 yii 构建一个应用程序,并尝试使用 yii 查询生成器以“漂亮的方式”调用我的 sql,与本指南中看到的方式相同

http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder

这是我构建的查询:

$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 的更多信息: http://www.yiiframework.com/doc/api/1.1/CDbConnection#createCommand-detail http://www.yiiframework.com/doc/api/1.1/CDbCommand

关于php - yii mysql 通过查询生成器使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com