gpt4 book ai didi

php - Yii2 事件记录中按查询等效的 MySQL 复杂顺序

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

我需要按 status 字段对表格数据进行排序,但我也想先显示一些具有特定 status 的行。

目前我可以像这样使用 MySQL 实现这一点:

SELECT status FROM item
ORDER BY status NOT LIKE '%order-status%', status

因此所有具有order-status 的项目将首先显示订单状态,然后其他项目按状态排序。

但我无法在 Yii2 Active Record 中实现这一点。我试着写这样的东西:

$query->orderBy(['not like', 'item.status', 'order-status']);
$query->orderBy(['item.status' => SORT_ASC]);

但这是不正确的。有什么方法可以在 Active Record 中实现这一点?

最佳答案

您可以使用 yii\db\Expression 创建自定义 order by 子句。您的要求的查询将是这样的:

$query->orderBy(new yii\db\Expression("status NOT LIKE '%order-status%',  status"))

Expression 实例中传递的这个参数将被 Yii 2 查询构建器直接使用。有关更多详细信息,您可以阅读 Expression documentation .

关于php - Yii2 事件记录中按查询等效的 MySQL 复杂顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976511/

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