diff --git a/src/Laravel/EloquentBuffer.php b/src/Laravel/EloquentBuffer.php index 08df728..4e914fa 100644 --- a/src/Laravel/EloquentBuffer.php +++ b/src/Laravel/EloquentBuffer.php @@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\MorphTo; use Tobyz\JsonApiServer\Context; +use Tobyz\JsonApiServer\Laravel\Field\ToMany; +use Tobyz\JsonApiServer\Laravel\Field\ToOne; use Tobyz\JsonApiServer\Schema\Field\Relationship; abstract class EloquentBuffer @@ -56,7 +58,21 @@ public static function load( $modelClass = get_class($resource->newModel($context)); if ($resource instanceof EloquentResource && !isset($constrain[$modelClass])) { - $constrain[$modelClass] = fn($query) => $resource->scope($query, $context); + $constrain[$modelClass] = function ($query) use ( + $resource, + $context, + $relationship, + ) { + $resource->scope($query, $context); + + if ( + ($relationship instanceof ToMany || + $relationship instanceof ToOne) && + $relationship->scope + ) { + ($relationship->scope)($query, $context); + } + }; } } diff --git a/src/Laravel/Field/Concerns/ScopesRelationship.php b/src/Laravel/Field/Concerns/ScopesRelationship.php new file mode 100644 index 0000000..5117917 --- /dev/null +++ b/src/Laravel/Field/Concerns/ScopesRelationship.php @@ -0,0 +1,17 @@ +scope = $scope; + + return $this; + } +} diff --git a/src/Laravel/Field/ToMany.php b/src/Laravel/Field/ToMany.php new file mode 100644 index 0000000..6f7d11a --- /dev/null +++ b/src/Laravel/Field/ToMany.php @@ -0,0 +1,10 @@ +