Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

peterdickins's avatar

Api Resources & Skinny Controllers

Hi,

I am trying to improve my Laravel knowledge and use the skinny controller methodologiy. To help do this I am using API Resources to return data from my controller, for example:

// UserController
public function store(StoreUserRequest $request)
{
    return new UserResource(User::create($request->validated());
}

// UserResource
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}

However I have a similar function in RegistrationController and I want to add the sanctum token to the response, how can I add this to the response using API resource and keeping my controller skinny?

// RegistrationController
public function store(StoreUserRequest $request)
{
    $user = User::create($request->validated());

    $token = $user->createToken('myapptoken')->plainTextToken;

    $response = [
        'user' => $user,
        'token' => $token
    ];

    return response($response, 201);
}

Thank you for your advice

0 likes
2 replies
MohamedTammam's avatar

Like this?

$response = [
  'user' => new UserResource($user),
  'token' => $token
];
1 like
pkboom's avatar
// UserController
public function store(StoreUserRequest $request)
{
    $user = User::create($request->validated());

    $token = $user->createToken('myapptoken')->plainTextToken;

	$user->token = $token

	return new UserResource($user);
}

// UserResource
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
       ...
        'token' => $this->token,
    ];
}

Please or to participate in this conversation.