nuxt-laravel-monorepo/apps/backend/app/Data/UserData.php

37 lines
877 B
PHP

<?php
namespace App\Data;
use App\Models\User;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\DataCollection;
use Spatie\LaravelData\Lazy;
use Spatie\LaravelData\Optional;
class UserData extends Data
{
public function __construct(
public int $id,
public string $name,
public string $email,
#[DataCollectionOf(RoleData::class)]
public Lazy|DataCollection $roles,
public string $created_at,
public string $updated_at,
) {}
public static function fromModel(User $user): self
{
return new self(
$user->id,
$user->name,
$user->email,
Lazy::whenLoaded('roles',$user, fn() => RoleData::collection($user->roles)),
$user->created_at,
$user->updated_at,
);
}
}