Yii2中的按字段排序

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Yii2中的按字段排序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了这个问题,没有找到yii仪器的任何解决方案.有人知道如何解决这个问题吗?

最终,我使用了这个糟糕的代码

$params = [];
foreach ($reciPEIds as $i => $recipeid) {
    $params[':id_'.$i] = $recipeId;
}

$recipes = Recipes::findBysql(
        'SELECT
            *
        From
            {{%recipes}}
        WHERE
            `id` IN ('.implode(',',array_keys($params)).')
        ORDER BY
            FIELD (id,'.implode(',array_reverse(array_keys($params))).')
        LIMIT
            :limit',$params + [':limit' => $this->count]
    )
    ->all();

如何解决:: find()?

UPD:应该是这样的

$recipes = Recipes::find()
    ->where(['id' => $recipeIds])
    ->orderBy(['id' => array_reverse($recipeIds)])
    ->limit($this->count)
    ->all();

解决方法

试试看:

$recipes = Recipes::find()
    ->where(['in','id',$recipeIds])
    ->orderBy([new \yii\db\ExPression('FIELD (id,' . implode(',array_reverse(array_keys($params))) . ')')])
    ->limit($this->count)
    ->all();

有关使用OrderBy和FIELD(…)的信息,请参阅https://github.com/yiisoft/yii2/issues/553

脚本宝典总结

以上是脚本宝典为你收集整理的Yii2中的按字段排序全部内容,希望文章能够帮你解决Yii2中的按字段排序所遇到的问题。

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

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