diff --git a/src/Illuminate/Database/Eloquent/Collection.php b/src/Illuminate/Database/Eloquent/Collection.php index 8c2ac6df4eda..52fd821e9e64 100755 --- a/src/Illuminate/Database/Eloquent/Collection.php +++ b/src/Illuminate/Database/Eloquent/Collection.php @@ -557,7 +557,7 @@ public function getQueueableIds() */ public function getQueueableRelations() { - return $this->isNotEmpty() ? $this->first()->getQueueableRelations() : []; + return $this->isEmpty() ? [] : array_intersect(...$this->map->getQueueableRelations()->all()); } /** diff --git a/tests/Database/DatabaseEloquentCollectionTest.php b/tests/Database/DatabaseEloquentCollectionTest.php index 8694b77ee680..cd3c4e488da0 100755 --- a/tests/Database/DatabaseEloquentCollectionTest.php +++ b/tests/Database/DatabaseEloquentCollectionTest.php @@ -422,6 +422,24 @@ public function testQueueableCollectionImplementationThrowsExceptionOnMultipleMo $c->getQueueableClass(); } + public function testQueueableRelationshipsReturnsOnlyRelationsCommonToAllModels() + { + // This is needed to prevent loading non-existing relationships on polymorphic model collections (#26126) + $c = new Collection([new class { + public function getQueueableRelations() + { + return ['user']; + } + }, new class { + public function getQueueableRelations() + { + return ['user', 'comments']; + } + }]); + + $this->assertEquals(['user'], $c->getQueueableRelations()); + } + public function testEmptyCollectionStayEmptyOnFresh() { $c = new Collection;