From 4fbcb8b69d9531d0787db262f0050815a24e731c Mon Sep 17 00:00:00 2001 From: Jason Lewis Date: Wed, 29 May 2019 09:01:16 +0930 Subject: [PATCH] Allow eager load constraints to still apply for pivot relations. --- composer.json | 2 +- src/EagerLoadPivotBuilder.php | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 860b9ac..2d9538a 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ } ], "require": { - "php": ">=5.4.0" + "php": ">=5.6.0" }, "autoload": { "psr-4": { diff --git a/src/EagerLoadPivotBuilder.php b/src/EagerLoadPivotBuilder.php index 7ee2a8d..e7b7ff8 100644 --- a/src/EagerLoadPivotBuilder.php +++ b/src/EagerLoadPivotBuilder.php @@ -87,11 +87,15 @@ protected function eagerLoadPivotRelations($models, $pivotAccessor) */ protected function getPivotEagerLoadRelations($pivotAccessor) { - $relations = array_filter(array_keys($this->eagerLoad), function ($relation) use ($pivotAccessor) { + $relations = array_filter($this->eagerLoad, function ($relation) use ($pivotAccessor) { return $relation != $pivotAccessor && str_contains($relation, $pivotAccessor); - }); - return array_map(function ($relation) use ($pivotAccessor) { - return substr($relation, strlen("{$pivotAccessor}.")); - }, $relations); + }, ARRAY_FILTER_USE_KEY); + + return array_combine( + array_map(function ($relation) use ($pivotAccessor) { + return substr($relation, strlen("{$pivotAccessor}.")); + }, array_keys($relations)), + array_values($relations) + ); } }