Jos*_*ned 9 php sorting laravel eloquent laravel-5
我有点卡在通常很直接的事情上.我需要根据特定值和"排序顺序"数组将记录从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;
Run Code Online (Sandbox Code Playgroud)
也许我错过了一些惊人的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;
});
Run Code Online (Sandbox Code Playgroud)