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
|
<?php
|
||||||
|
|
||||||
|
use App\Data\UserData;
|
||||||
use App\Http\Resources\UserResource;
|
use App\Http\Resources\UserResource;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
@ -16,6 +17,5 @@ use Illuminate\Support\Facades\Route;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Route::middleware(['auth:sanctum'])->get('/user', function (Request $request) {
|
Route::middleware(['auth:sanctum'])->get('/user', function (Request $request) {
|
||||||
|
return UserData::from($request->user()->load('roles'));
|
||||||
return new UserResource($request->user()->load('roles', 'permissions'));
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue