为了账号安全,请及时绑定邮箱和手机立即绑定

如何对laravel中的对象数组进行排序?

如何对laravel中的对象数组进行排序?

PHP
白板的微信 2021-12-03 19:33:11
这是我的关系函数public function comments(){    return $this->hasMany(Comment::class);}这是我的控制器public function allComments($id){    $id=(int)$id;    $post=Post::find($id);    $comments=$post->comments;    return dd($comments);}当我收到关系船的评论并返回时显示[  {    "id":48,    "user_id":1,    "post_id":17,    "isactive":1,    "body":"s",    "created_at":"2019-08-24 02:53:54",    "updated_at":"2019-08-24 02:53:54"},    {      "id":78,      "user_id":1,      "post_id":17,      "isactive":1,      "body":"s",      "created_at":"2019-08-24 02:54:06",      "updated_at":"2019-08-24 02:54:06"    },    {      "id":79,      "user_id":1,      "post_id":17,      "isactive":1,      "body":"s",      "created_at":"2019-08-24 02:54:06",      "updated_at":"2019-08-24 02:54:06"    },    {      "id":80,      "user_id":2,      "post_id":17,      "isactive":1,      "body":"\u06a9\u06cc\u0631 \u062e\u0631\u06cc",      "created_at":"2019-08-25 06:48:51",      "updated_at":"2019-08-24 06:48:51"    },    {      "id":102,      "user_id":2,      "post_id":17,      "isactive":1,      "body":"\u0628",      "created_at":"2019-08-25 01:32:39",      "updated_at":"2019-08-25 01:32:39"     },     {       "id":103,       "user_id":2,       "post_id":17,       "isactive":1,       "body":"\u0645\u0646 \u0628\u0627\u06cc\u062f \u0627\u0648\u0644 \u0628\u0627\u0634\u0645",       "created_at":"2019-08-25 01:35:13",       "updated_at":"2019-08-25 01:35:13"     },     {       "id":104,       "user_id":2,       "post_id":17,       "isactive":1,       "body":"\u0645\u0646 \u0627\u0648\u0644\u0645",       "created_at":"2019-08-25 02:01:32",       "updated_at":"2019-08-25 02:01:32"     },     {       "id":105,       "user_id":2,       "post_id":17,       "isactive":1,       "body":"\u0627\u0648\u0644 \u0634\u062f\u0645",       "created_at":"2019-08-25 02:02:18",       "updated_at":"2019-08-25 02:02:18"     }]我不想要它,我只想按created_at对其进行排序,但它是这样显示的(这是字典吗?)
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

要在应用过滤器后删除对象键sortByDesc(),您可以附加values()then all():


public function allComments($id)

{

    $id=(int)$id;

    $post=Post::find($id);

    $comments=$post->comments->sortByDesc('created_at')->values()->all();

    return $comments;

}


查看完整回答
反对 回复 2021-12-03
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

使用Laravel Collection 的values()功能。这将从结果集合中删除键。


如果你想要一个数组而不是一个集合,请使用values()->all() .


public function allComments($id)

{

    $id = (int) $id;

    $post = Post::find($id);

    $comments = $post->comments

                    ->sortByDesc('created_at')

                    ->values()

                    ->all();


    return $comments;

}

建议


更流畅的代码。


public function allComments($id)

{

    $comments = Comment::where('pots_id', $id)

                    ->sortByDesc('created_at')

                    ->values()

                    ->all();


    return $comments;

}


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信