diff --git a/src/Http/Controllers/ProfileController.php b/src/Http/Controllers/ProfileController.php index f711ca4c..4f20196d 100644 --- a/src/Http/Controllers/ProfileController.php +++ b/src/Http/Controllers/ProfileController.php @@ -22,7 +22,7 @@ public function __invoke(RestifyRequest $request) $user->{ProfileAvatarRequest::$userAvatarAttribute} = url($user->{ProfileAvatarRequest::$userAvatarAttribute}); } - if ($related = $request->get('related')) { + if ($related = $request->input('related')) { $user->load(explode(',', $related)); } diff --git a/src/Repositories/Casts/RelatedCast.php b/src/Repositories/Casts/RelatedCast.php index 373568e9..ded5c6c2 100644 --- a/src/Repositories/Casts/RelatedCast.php +++ b/src/Repositories/Casts/RelatedCast.php @@ -3,20 +3,21 @@ namespace Binaryk\LaravelRestify\Repositories\Casts; use Binaryk\LaravelRestify\Contracts\RestifySearchable; +use Binaryk\LaravelRestify\Http\Requests\RestifyRequest; +use Binaryk\LaravelRestify\Repositories\Repository; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\Relation; -use Illuminate\Http\Request; use Illuminate\Support\Collection; class RelatedCast extends RepositoryCast { - public static function fromBuilder(Request $request, Builder $builder): Collection + public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection { - return $builder->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get(); + return $builder->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get(); } - public static function fromRelation(Request $request, Relation $relation): Collection + public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection { - return $relation->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get(); + return $relation->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get(); } } diff --git a/src/Repositories/Casts/RepositoryCast.php b/src/Repositories/Casts/RepositoryCast.php index 278f9821..37ab539b 100644 --- a/src/Repositories/Casts/RepositoryCast.php +++ b/src/Repositories/Casts/RepositoryCast.php @@ -2,14 +2,15 @@ namespace Binaryk\LaravelRestify\Repositories\Casts; +use Binaryk\LaravelRestify\Http\Requests\RestifyRequest; +use Binaryk\LaravelRestify\Repositories\Repository; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\Relation; -use Illuminate\Http\Request; use Illuminate\Support\Collection; abstract class RepositoryCast { - abstract public static function fromBuilder(Request $request, Builder $builder): Collection; + abstract public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection; - abstract public static function fromRelation(Request $request, Relation $relation): Collection; + abstract public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection; } diff --git a/src/Repositories/Repository.php b/src/Repositories/Repository.php index 1296fa50..ec5754bb 100644 --- a/src/Repositories/Repository.php +++ b/src/Repositories/Repository.php @@ -533,9 +533,9 @@ public function resolveRelationships($request): array : $this->resource->{$relation}(); collect([ - Builder::class => fn () => $withs->put($relation, (static::$relatedCast)::fromBuilder($request, $paginator)), + Builder::class => fn () => $withs->put($relation, (static::$relatedCast)::fromBuilder($request, $paginator, $this)), - Relation::class => fn () => $withs->put($relation, (static::$relatedCast)::fromRelation($request, $paginator)), + Relation::class => fn () => $withs->put($relation, (static::$relatedCast)::fromRelation($request, $paginator, $this)), Collection::class => fn () => $withs->put($relation, $paginator), diff --git a/tests/Fixtures/Post/RelatedCastWithAttributes.php b/tests/Fixtures/Post/RelatedCastWithAttributes.php index 3c24fe20..85e16c68 100644 --- a/tests/Fixtures/Post/RelatedCastWithAttributes.php +++ b/tests/Fixtures/Post/RelatedCastWithAttributes.php @@ -3,24 +3,25 @@ namespace Binaryk\LaravelRestify\Tests\Fixtures\Post; use Binaryk\LaravelRestify\Contracts\RestifySearchable; +use Binaryk\LaravelRestify\Http\Requests\RestifyRequest; use Binaryk\LaravelRestify\Repositories\Casts\RepositoryCast; +use Binaryk\LaravelRestify\Repositories\Repository; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\Relation; -use Illuminate\Http\Request; use Illuminate\Support\Collection; class RelatedCastWithAttributes extends RepositoryCast { - public static function fromBuilder(Request $request, Builder $builder): Collection + public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection { - return $builder->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE)) + return $builder->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE)) ->get() ->map(fn ($item) => ['attributes' => $item->toArray()]); } - public static function fromRelation(Request $request, Relation $relation): Collection + public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection { - return $relation->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE)) + return $relation->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE)) ->get() ->map(fn ($item) => ['attributes' => $item->toArray()]); }