php – 在laravel关系集合上自定义排序

前端之家收集整理的这篇文章主要介绍了php – 在laravel关系集合上自定义排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有点卡在通常很直接的事情上.我需要根据特定值和“排序顺序”数组将hasMany关系中的记录排序为自定义顺序.

我的代码不起作用,因为我传递了uSort()一个雄辩的集合,我不知道如何解决它.

$go = $this->hasMany('Product')->orderBy('colour','DESC');

$order = array('RED','GREEN','BLUE','YELLOW');

usort($go,function ($a,$b) use ($order) {
    $pos_a = array_search($a->colour,$order);
    $pos_b = array_search($b->colour,$order);
    return $pos_a - $pos_b;
});

return $go;

也许我错过了一些惊人的laravel魔术助手,但我被困住了.任何想法或建议将不胜感激!

干杯

Collection的usort等价物是sort()方法.它将回调作为参数并返回已排序的集合.

所以在你的情况下,解决方案是:

$go = $go->sort(function ($a,$b) use ($order) {
  $pos_a = array_search($a->colour,$order);
  $pos_b = array_search($b->colour,$order);
  return $pos_a - $pos_b;
});

猜你在找的Laravel相关文章