簡體   English   中英

Laravel API ResourceCollection 不起作用

[英]Laravel API ResourceCollection doesnt works

我想知道如何使用 ResourceCollection 獲取工作 API 調用

錯誤 :

Undefined property: Illuminate\Database\Query\Builder::$name

我的產品方法:

 public function index()
{
    return ProductCollection::collection(Product::all());
}

我的收藏:

public function toArray($request)
{
    //return parent::toArray($request);
    return [
        "name" => $this->name,
        "price" => $this->price,
        "href" => [
            "link" => route("product.show", $this->id)
        ]
    ];
}

只是通過 Resourse (不是 ResourceCollection )嘗試了它只是修改了方法調用並且它正在工作,但我需要知道如何修復 ResourceCollection return new ProductResource($product);

錯誤捕捉:

在此處輸入圖片說明

改變

use Illuminate\Http\Resources\Json\ResourceCollection;

class ProductCollection extends ResourceCollection
{

use Illuminate\Http\Resources\Json\Resource;

class ProductCollection extends Resource
{

ProductCollection 繼承 ResourceCollection 而不是 Resource,所以 $this 不是模型而是集合。 如果你想改變集合的每個元素,你可以像這樣使用 map 函數:

public function toArray($request)
{
    return $this->map(function($product) {
        return [
            "name" => $this->name,
            "price" => $this->price,
            "href" => [
                "link" => route("product.show", $this->id)
            ]
        ];
    });
}

創建兩個資源

對於單一資源和集合資源

  • php artisan make:resource ProductResource
  • php artisan make:resource ProductCollection 或
  • php artisan make:resource Product --collection

然后去你的控制器

use App\\Http\\Resources\\ProductCollection; use App\\Http\\Resources\\ProductResource; // for single collection resource in return new ProductCollection(Product::all()); //or return ProductResource::collection(Product::all()); //for single resource return new ProductResource(Product::findOrFail($id));
官方文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM