gpt4 book ai didi

php - Yii2 按关系排序

转载 作者:可可西里 更新时间:2023-11-01 07:39:23 26 4
gpt4 key购买 nike

我有以下数据库:

day: id
task: id
day_task: day_id, task_id, weight

现在我想获取按重量排序的特定日期的所有任务。

public function getTasks()
{
return $this->hasMany(Task::className(), ['id' => 'task_id'])->viaTable('day_task', ['day_id' => 'id'], function ($query) {
$query->orderBy(['weight' => SORT_ASC]);
});
}

导致:

SELECT * FROM `day_task` WHERE `day_id`=2 ORDER BY `weight`
SELECT * FROM `task` WHERE `id` IN ('2', '1', '3', '4')

问题是 DBMS 返回存储在表中的行,不考虑 IN 的顺序,所以我得到“1”、“2”、“3”、“4”而不是“2” , '1', '3', '4'。

除了手动逐行获取外,我找不到任何解决方案。

最佳答案

尝试在查询结束时添加 orderBy

public function getTasks()
{
return $this->hasMany(Task::className(), ['id' => 'task_id'])
->viaTable('day_task', ['day_id' => 'id'])
->orderBy(['weight' => SORT_ASC]);
}

关于php - Yii2 按关系排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114337/

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