thinkphp where in order 按照顺序in的循环排序

19 篇文章 0 订阅

第一种

还有一种是 通过mysql内置的函数 find_in_set
如果不可以的话,不要来找我,我没有试过

另外一种

<?php
/**
 * Created by.
 * User: Jim
 * Date: 2020/11/16
 * Time: 9:11
 */

namespace app\index\controller;


use think\Controller;
use think\Db;
use think\db\Expression;

class Test extends Controller
{
    public function index()
    {

        $ids = implode(',',[1,4,844,6,900,10]);
        $exp = new Expression('field(id,'.$ids.')');
        $datas = Db::name('goods')
            ->whereIn('id',$ids)
            ->field('id,rank')
            ->order($exp)
            ->select();

        dump($datas);

    }

}



    // 详情
    public function detail($ids = ''){

        $combination = $this->model->get($ids);
        // 根据goods—ids 里面的值,按照原来的排序出来
        //$combination['goods_ids']  == 1,5,4,7,1,3
        
        $exp = new Expression("field(id,{$combination['goods_ids']})");

        $goods = Goods::where("FIND_IN_SET(`id`,'{$combination['goods_ids']}')")
            ->field('id')
            ->orderRaw("field(id,{$combination["goods_ids"]})")
//            ->order($exp)
            ->select();
		dd(collection($goods)->toArray());
        $this->assign('goods',$goods);
        $this->assign('combination',$combination);

        return $this->view->fetch();


    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值