diff --git a/src/Adapter/EloquentAdapter.php b/src/Adapter/EloquentAdapter.php index c992f74..7e1db1a 100644 --- a/src/Adapter/EloquentAdapter.php +++ b/src/Adapter/EloquentAdapter.php @@ -15,6 +15,7 @@ use Closure; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasOneThrough; use InvalidArgumentException; use Tobyz\JsonApiServer\Schema\Attribute; use Tobyz\JsonApiServer\Schema\HasMany; @@ -176,8 +177,9 @@ class EloquentAdapter implements AdapterInterface public function filterByHasOne($query, HasOne $relationship, array $ids): void { $relation = $this->getEloquentRelation($query->getModel(), $relationship); + $column = $relation instanceof HasOneThrough ? $relation->getQualifiedParentKeyName() : $relation->getQualifiedForeignKeyName(); - $query->whereIn($relation->getQualifiedForeignKeyName(), $ids); + $query->whereIn($column, $ids); } public function filterByHasMany($query, HasMany $relationship, array $ids): void