gpt4 book ai didi

mysql - 带有自定义查询的 yii2 数据提供者

转载 作者:行者123 更新时间:2023-11-29 05:07:21 25 4
gpt4 key购买 nike

我有以下索引操作代码

$searchModel = new PatientTestSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

return $this->render('index', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);

patientTestSearch 中的搜索功能是

    $query = PatientTest::find();

$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => ['pageSize' => $pagination],
'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]]
]);
$query->joinWith('patient');
$query->joinWith('testGroup');

如何在上述查询中使用 group concate 和 group by?我已经在 Controller 的操作中尝试过这个

$dataProvider->query->groupBy(['patient_id']);

但这会产生以下错误

SQLSTATE[42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中并且包含非聚合列“wizlaboratory.patient_test.patient_id”,它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

如果我使用 sqldataprovider,那么我不能有过滤选项。

最佳答案

ONLY_FULL_GROUP_BY 模式拒绝查询,其中选择列表、HAVING 条件或 ORDER BY 列表引用既未在 GROUP BY 子句中命名也未在功能上依赖(唯一确定)的非聚合列GROUP BY 列。

  • 要在数据库级别解决这个问题,您可以关闭ONLY_FULL_GROUP_BY 模式通过在你的 mysql 中运行这个查询:

    SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

  • 要在您的$query 中解决此问题,请将所有必需的字段添加到groupBy() 方法。 ($query->groupBy(['attr1', 'attr2'])

关于mysql - 带有自定义查询的 yii2 数据提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45539820/

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