77use Illuminate \Http \Request ;
88
99/**
10- * @mixin \Test\App \Models\User
10+ * @extends JsonApiResource< \Test\app \Models\User>
1111 */
1212class UserResource extends JsonApiResource
1313{
14- /** @var \Test\app\Models\User $resource */
15- public $ resource ;
16-
1714 protected function toType (Request $ request ): string
1815 {
1916 return 'user ' ;
@@ -22,33 +19,31 @@ protected function toType(Request $request): string
2219 protected function toAttributes (Request $ request ): iterable
2320 {
2421 return [
25- 'name ' => $ this ->name ,
26- 'email ' => $ this ->email ,
22+ 'name ' => $ this ->resource -> name ,
23+ 'email ' => $ this ->resource -> email ,
2724 ];
2825 }
2926
3027 protected function toResourceMeta (Request $ request ): ?iterable
3128 {
3229 return [
33- 'created_at ' => $ this ->created_at ->format (DateTimeInterface::ATOM ),
34- 'updated_at ' => $ this ->updated_at ->format (DateTimeInterface::ATOM ),
30+ 'created_at ' => $ this ->resource -> created_at ->format (DateTimeInterface::ATOM ),
31+ 'updated_at ' => $ this ->resource -> updated_at ->format (DateTimeInterface::ATOM ),
3532 ];
3633 }
3734
3835 protected function toRelationships (Request $ request ): iterable
3936 {
4037 return [
41- 'posts ' => PostResource::relationship (fn () => $ this ->posts , fn () => [
42- 'self ' => "https://api.example.com/user/ {$ this ->id }/relationships/posts " ,
43- 'related ' => "https://api.example.com/user/ {$ this ->id }/posts " ,
38+ 'posts ' => PostResource::relationship (fn () => $ this ->resource -> posts , fn () => [
39+ 'self ' => "https://api.example.com/user/ {$ this ->resource -> id }/relationships/posts " ,
40+ 'related ' => "https://api.example.com/user/ {$ this ->resource -> id }/posts " ,
4441 ])->asCollection (),
45- 'comments ' => CommentResource
46- ::relationship (fn () => $ this ->whenLoaded ('comments ' ))
47- ->withLinks (fn () => [
48- 'self ' => "https://api.example.com/user/ {$ this ->id }/relationships/comments " ,
49- 'related ' => "https://api.example.com/user/ {$ this ->id }/comments " ,
50- ])
51- ->asCollection ()
42+ 'comments ' => CommentResource::relationship (fn () => $ this ->whenLoaded ('comments ' ), fn () => [
43+ 'self ' => "https://api.example.com/user/ {$ this ->resource ->id }/relationships/comments " ,
44+ 'related ' => "https://api.example.com/user/ {$ this ->resource ->id }/comments " ,
45+ ])
46+ ->asCollection ()
5247 ];
5348 }
5449}
0 commit comments