File tree Expand file tree Collapse file tree 3 files changed +9
-5
lines changed Expand file tree Collapse file tree 3 files changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -214,7 +214,9 @@ protected function toRelationships(Request $request): array
214214{
215215 return [
216216 'avatar' => AvatarResource::relationship($this->avatar),
217- // as collection, with condition
217+ // with conditional relationship
218+ 'administrator' => $this->when($request->user()->isAdmin(), UserResource::relationship(fn() => $this->administrator),
219+ // as collection, with conditional value
218220 'comments' => CommentResource::relationship(fn() => $this->whenLoaded('comments'))->asCollection(),
219221 // with relationship (allow to include links and meta on relation)
220222 'posts' => PostResource::relationship(fn() => $this->posts)->withLinks(fn() => [
Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ trait Relationships
1414 *
1515 * @param \Illuminate\Http\Request $request
1616 *
17- * @return array <string, Relationship>|iterable<Relationship >
17+ * @return iterable <string, Relationship|\Illuminate\Http\Resources\PotentiallyMissing >
1818 *
1919 * ```
2020 * return [
@@ -39,8 +39,10 @@ protected function toRelationships(Request $request): iterable
3939 private function requestedRelationships (Request $ request ): array
4040 {
4141 $ relations = [];
42+ $ relationships = $ this ->toRelationships ($ request );
43+ $ relationships = $ this ->filter ($ relationships );
4244
43- foreach ($ this -> toRelationships ( $ request ) as $ name => $ relationship ) {
45+ foreach ($ relationships as $ name => $ relationship ) {
4446 $ relationship ->forRelation ($ name );
4547
4648 $ included = Includes::include ($ request , $ name );
Original file line number Diff line number Diff line change @@ -34,12 +34,12 @@ protected function toResourceMeta(Request $request): ?iterable
3434 protected function toRelationships (Request $ request ): iterable
3535 {
3636 return [
37- 'user ' => UserResource::relationship (fn () => $ this ->resource ->user )
37+ 'user ' => $ this -> when ( true , UserResource::relationship (fn () => $ this ->resource ->user )
3838 ->withLinks (fn () => [
3939 'self ' => "https://api.example.com/comment/ {$ this ->resource ->id }/relationships/user " ,
4040 'related ' => "https://api.example.com/comment/ {$ this ->resource ->id }/user " ,
4141 ])
42- ->whenIncluded (),
42+ ->whenIncluded ()) ,
4343 'post ' => PostResource::relationship (fn () => $ this ->resource ->post )
4444 ->withLinks (fn () => [
4545 'self ' => "https://api.example.com/comment/ {$ this ->resource ->id }/relationships/post " ,
You can’t perform that action at this time.
0 commit comments