为什么这个ResourceCollection不起作用?

问题描述 投票:0回答:1

ResourceCollection不提供ResourceCollection

我试图提供我的表的集合以显示数据库中的大容量(索引)或我所有的表...

似乎存在导致ResourceCollection无法正常工作的错误,我应该检查什么?

Resource \ Order.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class Order extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
        ];
    }
}

ResourceCollection返回此错误的Json响应?

// 20191017103310
// http://domain.test/api/middleware/orders/bulkindex

[
  {
    "data": {
      "connection": {

      },
      "grammar": {

      },
      "processor": {

      },
      "bindings": {
        "select": [

        ],
        "from": [

        ],
        "join": [

        ],
        "where": [

        ],
        "having": [

        ],
        "order": [

        ],
        "union": [

        ],
        "unionOrder": [

        ]
      },
      "aggregate": null,
      "columns": null,
      "distinct": false,
      "from": "orders",
      "joins": null,
      "wheres": [

      ],
      "groups": null,
      "havings": null,
      "orders": null,
      "limit": null,
      "offset": null,
      "unions": null,
      "unionLimit": null,
      "unionOffset": null,
      "unionOrders": null,
      "lock": null,
      "operators": [
        "=",
        "<",
        ">",
        "<=",
        ">=",
        "<>",
        "!=",
        "<=>",
        "like",
        "like binary",
        "not like",
        "ilike",
        "&",
        "|",
        "^",
        "<<",
        ">>",
        "rlike",
        "not rlike",
        "regexp",
        "not regexp",
        "~",
        "~*",
        "!~",
        "!~*",
        "similar to",
        "not similar to",
        "not ilike",
        "~~*",
        "!~~*"
      ],
      "useWritePdo": false
    }
  },
  {
    "data": {
      "connection": {

      },
      "grammar": {

      },
      "processor": {

      },
      "bindings": {
        "select": [

        ],
        "from": [

        ],
        "join": [

        ],

     ...

ETC...

请注意,我可以将其更改为JsonResource,并且可以按预期运行...

编辑:api.php(路由)

        Route::get('/orders/bulkindex/', function () {
            return OrderResource::collection(Order::all());
        });

编辑:

use App\Http\Resources\Cart as CartResource;

        return [
            'data' => $this->collection,
            'carts' => CartResource::collection($this->carts), // CODE DOES NOT WORK
        ];

我收到此错误消息:

Property [carts] does not exist on this collection instance.

Resources \ Cart.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class Cart extends ResourceCollection
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}
php laravel
1个回答
0
投票

将口才模型集合直接传递给资源的构造函数

Route::get('/orders/bulkindex/', function () {
   return OrderResource(Order::all());
});

来自the docs

定义了资源集合后,可能会从路由或控制器中返回它:

use App\Http\Resources\UserCollection;
use App\User;

Route::get('/users', function () {
    return new UserCollection(User::all());
});

不调用静态方法::collection()

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.