簡體   English   中英

Laravel 資源集合:“未定義屬性:Illuminate\\Database\\Query\\Builder::$map”

[英]Laravel Resource Collection: "Undefined property: Illuminate\\Database\\Query\\Builder::$map"

我目前正在試用 Laravel 資源。 單一資源工作正常。 但是 Resource Collection 拋出以下錯誤:

“未定義的屬性:Illuminate\Database\Query\Builder::$map”

UserController.php

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

class UserController extends Controller
{
   public function index()
    {
        return [
            'success' => true, 
            'data' => new UserCollection(User::all())
        ];        
    }

     public function show(User $user)
     {
        return [
            'success' => true, 
            'data' => new UserResource($user)
        ];
    }
}

UserCollection.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class UserCollection extends ResourceCollection
{
    public function toArray($request)
    {
        $count = $this->collection->count();
        
        return [
            'count' => $count,
            'data' => $this->collection
        ];
    }
}

錯誤顯然來自這一行: 'data' => $this->collection 我懷疑 $this->collection 遍歷用戶集合。 如果我 dd($this->collection) 我正確地從數據庫中獲取了所有 51 個項目。 從數據庫:

output dd($this->collection) inside resource collection)

Illuminate\Support\Collection {#1380 ▼ //
app/Http/Resources/UserCollection.php:18
  #items: array:51 [▶]
  #escapeWhenCastingToString: false
}

我必須改變什么才能讓它發揮作用? 提前致謝,邁克!

我想你想要這樣的東西?

return [
    'count' => $count,
    'data' => UserResource::collection($this->collection)
];

暫無
暫無

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

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