Order mySQL query (yii db query) 基于数组值

Order mySQL query (yii db query) based on array values

我目前正在使用自定义插件(和自定义 table)开发 Craft Commerce 网站,并尝试根据数组中的 'code' 值对数据库查询结果进行排序(数组数据在数据库中不可用,因为它来自外部 api).

包含代码“1”的项目应在“10”之前返回,并按名称的字母顺序返回。

我有一个数组,其中包含需要从 table 返回的 ID,但我正在努力寻找一种方法来根据 'code' 的值对查询结果进行排序大批。 (table 当前包含 14000 行并且每周都在增长。)

Table: |编号 |姓名 | | - | - | | 1 |第一项 | | 2 |第二项 | | 3 |第三项 |

数组:

$data = array(
  array('id' => 1, 'code' => 1),
  array('id' => 2, 'code' => 10),
  array('id' => 3, 'code' => 3),
);

我目前正在使用以下查询来检索数组中返回的项目,因此唯一缺少的是顺序。

$queryIds = (new Query())
->select(['id', 'name'])
->from('items')
->where(['in', 'id', $items['ids']])
->pairs();

我将对 ID 和代码数组使用派生的 table 子查询。

这就是我在 SQL 中的意思。

SELECT items.id, items.name
FROM items
JOIN (
 SELECT 1 AS id, 1 AS code
 UNION SELECT 2, 10
 UNION SELECT 3, 3
) AS a ON items.id = a.id
ORDER BY a.code

我不使用 Yii 查询生成器,但根据我看到的文档,它支持联合和派生 tables。