php – Yii2按关系排序

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Yii2按关系排序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下数据库

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 ‘,’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按关系排序全部内容,希望文章能够帮你解决php – Yii2按关系排序所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。