关于laravel中查询后返回的数组保持键的位置不变

最近在搞一个在后台配置公司信息的东西,因为手动配置的这些信息没有那么活跃,所以将这些配置信息存redis,当你编辑的时候只要将默认展示的列表中数组的key值以及新的company_id传过去找到相应的key将company_id替换掉即可。

我在查询的时候是这样写的:

$companys = CompanyModel::whereIn('id',$ids)->get();
这里的$ids是替换以后的所以company_id组成的数组,上面那样写看上去没有问题,可以获取到配置完以后的数据。

但是当你在列表中针对某一条进行编辑的时候,其实这时候原来的key已经变了位置,因为上面那种查询默认是按照id ASC 排序的,最后会导致当id大于原始id的时候,就不达不到效果
上面说了那么多 只是一个应用场景以及出错的原因,接下来才是重点:
我们只需给他一个特殊的排序即可:
$companys = CompanyModel::whereIn('id',$ids)
      ->orderByRaw("FIELD(id, " . implode(", ", $ids) . ")")
      ->get();

这样达到的效果,正是我想要的,编辑哪条替换哪条,位置不变。

转载于:https://www.cnblogs.com/a-record/p/8883526.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值