【问题标题】:Inconsistent return values in Laravel collectionsLaravel 集合中的返回值不一致
【发布时间】:2016-02-27 13:26:21
【问题描述】:

我正在开发基于线程的消息传递系统。

我有一个简单的查询来返回特定线程的所有消息:

$t->messages->sortByDesc('updated_at')

将其传递给return response()->json() 时,如果它有一条消息,则返回值为array。而如果它有多个消息,则返回值是 object 对象,如 {0 => {messageattribs}, 1 => {messageattribs}}

我想知道为什么会这样,以及为什么它不像第一种情况那样在没有索引键模式的情况下不遵循数组。

【问题讨论】:

  • 这是一个多维数组,是一回事。第一个是 1 行,第二个是多行。
  • @MinaYoussef 问题是为什么它不能是 [{messageattribs},{messageattribs}] 而不是 {0 => {messageattribs}, 1 => {messageattribs}}。没有索引键的数组将是与第一种情况一致的数组。
  • 如果我理解正确,这就是 Eloquent 的工作原理,如果你喜欢 laravel.com/docs/5.1/eloquent-collections#custom-collections,你可以使用自定义集合

标签: php json sorting laravel-5 laravel-5.1


【解决方案1】:

默认情况下,Laravel 保留索引数组,就像你面对的那样。

要“删除”该索引只需调用几个方法:http://laravel.com/docs/5.1/collections#method-sortby

$t->messages->sortByDesc('updated_at')->values()->all();

它会像你想要的那样返回一个集合/集合。

希望对你有帮助!

最好的祝愿。

PS:让我邀请你参加 Laravel 课程,你可以在那里学到新的东西:Laravel Course

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多