feat: Use laravel-data example instead of Resources
parent
eac670642a
commit
2c5934c4ed
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace App\Data;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
class RoleData extends Data
|
||||
{
|
||||
public function __construct(
|
||||
public string $name,
|
||||
) {}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Data\UserData;
|
||||
use App\Http\Resources\UserResource;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
|
@ -16,6 +17,5 @@ use Illuminate\Support\Facades\Route;
|
|||
*/
|
||||
|
||||
Route::middleware(['auth:sanctum'])->get('/user', function (Request $request) {
|
||||
|
||||
return new UserResource($request->user()->load('roles', 'permissions'));
|
||||
return UserData::from($request->user()->load('roles'));
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue