gpt4 book ai didi

php - 按 created_at 排序 Eloquent 集合

转载 作者:IT王子 更新时间:2023-10-29 00:00:35 25 4
gpt4 key购买 nike

我有一个名为“posts”的表,其列:“post_id int primary increments”、“poster_id int”和“status text”,还有一个名为friends 的数组,列:“user_id int primary”和“friend_ids”文本'。

我需要获取 friend 文本列中的所有 ID,这很容易使用:

$friends = explode(',', \Friend::where('user_id', \Sentry::getUser()->id)->first()->friend_ids);

文本列中的数据看起来像“1、2、3”等。

然后我创建一个 Eloquent Collection 对象,这也很容易通过以下方式完成:

$posts = new \Illuminate\Database\Eloquent\Collection();

但问题是我不知道如何填充集合并按 Post 对象的“created_at”列对其内容进行排序。

这是我目前拥有的:

foreach ($friends as $id) {
$posts_ = \Post::where('poster_id', $id)->getQuery()
->orderBy('created_at', 'desc')
->get();
foreach($posts_ as $post) {
$posts->add($post);
}
}

我不知道这段代码是否适用于按“created_at”列对整个帖子集合进行排序。我还需要能够轻松地对整个集合进行分页。

推荐的收藏排序方式是什么?

最佳答案

如果要对 collection 进行排序,可以使用 sortBy 方法按给定键

$sorted = $posts->sortBy('created_at');

您还可以在 collection

上应用回调函数
$sorted = $posts->sortBy(function($post)
{
return $post->created_at;
});

希望这会有所帮助。关于collections的更多信息,你可以阅读docs

关于php - 按 created_at 排序 Eloquent 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818858/

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