#Call to undefined method App\Models\Template::whenLoaded()

2 messages · Page 1 of 1 (latest)

shrewd monolith
#

Hi, I got into this problem when using a ResourceCollection

Model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;

class Template extends Model
{
    use HasFactory;

    protected $fillable = ['name', 'user_id'];

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }

    public function pages(): HasMany
    {
        return $this->hasMany(Page::class);
    }
}

Resource

<?php

namespace App\Http\Resources;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

class TemplateCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @return array<int|string, mixed>
     */
    public function toArray(Request $request): array
    {
        return [
            'data' => $this->collection->transform(function ($template) {
                return [
                    'id' => $template->id,
                    'name' => $template->name,
                    'user' => UserResource::make($template->whenLoaded('user')),
                    'created_at' => $template->created_at,
                    'updated_at' => $template->updated_at,
                ];
            })->all(),
        ];
    }
}

I have a similar one that works just fine, but I can't seem to figure this one out