Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 依关系排序_Php_Mysql_Sql_Yii_Yii2 - Fatal编程技术网

Php 依关系排序

Php 依关系排序,php,mysql,sql,yii,yii2,Php,Mysql,Sql,Yii,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)

我有以下数据库:

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”

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

我没有测试此问题:

// in class Day:

public function getTasks() {
    return Task::find()
        ->leftJoin('day_task', 'task.id=day_task.task_id')
        ->where(['day_task.day_id' => $this->id])
        ->orderBy(['day_task.weight' => SORT_ASC]);
}
这将导致如下查询:

选择任务。*
从任务左侧加入task.id上的day\u任务=day\u task.task\u id
其中day_task.day_id=
按天订购\u任务重量ASC

这是真的吗?

尝试在查询结束时添加orderBy

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

请检查这个是的,我知道这一点,但我不知道如何将其应用于Yii