gpt4 book ai didi

php - 如何根据计数或出现次数对同一 mysql 列中的值进行排序

转载 作者:行者123 更新时间:2023-11-29 07:14:34 24 4
gpt4 key购买 nike

我正在尝试按计数对 Laravel 集合进行排序。我有一个数据库: USERS ,在我的数据库中我有一个名为 State 的列,它存储用户的家乡州示例:佛罗里达

我正在提取这样的集合:

public function friends()
{
return $this->friendsOfMine()
->wherePivot('accepted', true)
->get()
->merge(
$this->friendsOf()
->wherePivot('accepted', true)
->get()
);
}

然后在 View 中:

@foreach ($user->friends() as $friend)
{{$friend->state}}
@endforeach

我想按照州中好友数量从最多到最少的顺序对州进行排序,并显示计数(该州的好友总数)

示例:如果纽约有 100 个 friend ,德克萨斯州有 70 个 friend ,佛罗里达州有 20 个 friend ,那么结果将是:

纽约 100

德克萨斯州 70

佛罗里达20

我知道我可以使用 count() 、 sort() 和 sortBy() 等函数,但我不知道如何在这种情况下使用它,因为我在同一列中有值并且想要根据状态出现的次数,通过 count() 对它们进行排序。

最佳答案

I want to sort the states in order from greatest amount of friends from state to least amount of friends from state and show the count (total amount of friends for that state)

// Get a collection of state names as keys
// and the frequency of each state as values,
// sorted by the frequency descending

$states_count = $user->friends->groupBy('state')->map(function ($states) {
return $states->count();
})->sort()->reverse();
<小时/>

如果您希望好友列表本身按该状态频率顺序排序,

// (If the states of any friends pair have equal frequency
// in the states list, sort those by state name alphabetically).

$friends_sorted = $user->friends->sort(function ($f1, $f2) use ($states_count) {
if ($states_count->get($f1->state) < $states_count->get($f2->state)
return 1;
if ($states_count->get($f1->state) > $states_count->get($f2->state)
return -1;

return strcmp($f1->state, $f2->state);
});

关于php - 如何根据计数或出现次数对同一 mysql 列中的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38412068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com