【问题标题】:Expected Array, got Object warning when a Laravel collection that starts with non-zero index is returned预期的数组,当返回以非零索引开头的 Laravel 集合时收到对象警告
【发布时间】:2019-03-13 22:46:51
【问题描述】:

在我的 laravel+vue 应用程序中,我返回了一个过滤后的集合:

public function index()
{
    $orders = Order::all();
    $filteredOrders = $orders->filter(function($order){
        return $order->hasLoggedInUserFromDeliveryEnd();
    });
    return $filteredOrders;       
}

在客户端,我使用vuetify datatable 来填充数据:

<template slot="items" slot-scope="props">
    <td class="text-xs-left">{{ props.item.order_code }}</td>
</template>

当集合返回正确索引的(意味着它有第零个索引)集合时,数据会正确显示,但如果它不是正确索引的集合,那么我会在控制台中收到以下错误:

[Vue 警告]:无效的道具:道具“项目”的类型检查失败。预期的 数组,得到对象。

发现于

--->

如何使集合看起来像一个数组而不是一个对象?

【问题讨论】:

  • 我猜是array_values
  • 首先检查一下输出的样子。您可以使用dd($filteredOrders) 或使用浏览器的网络选项卡。
  • @u_mulder 我收到此错误:array_values() expects parameter 1 to be array, object given

标签: php laravel vue.js


【解决方案1】:

您始终可以尝试在过滤后的结果上使用toArray,以确保您始终获得一个数组,例如:filter(...)-&gt;toArray()

编辑:如果您想重置索引,您可以使用 -&gt;values(),它会执行此操作并将结果转换为数组。

【讨论】:

  • 你确定它是零索引数组吗?
  • 您可以尝试将-&gt;values() 用于零索引数组
猜你喜欢
  • 2020-01-05
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 2018-12-07
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多