From 36e68940ea236a9e96fb42671386a8939bb4e347 Mon Sep 17 00:00:00 2001 From: Alessandro Benoit Date: Fri, 17 Sep 2021 11:11:40 +0200 Subject: [PATCH] Add support for getting Model morphed alias --- .../Database/Eloquent/Relations/Relation.php | 11 +++++++++++ tests/Database/DatabaseEloquentRelationTest.php | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/Illuminate/Database/Eloquent/Relations/Relation.php b/src/Illuminate/Database/Eloquent/Relations/Relation.php index aa8ce5a07da0..10e1ae30d4b0 100755 --- a/src/Illuminate/Database/Eloquent/Relations/Relation.php +++ b/src/Illuminate/Database/Eloquent/Relations/Relation.php @@ -465,6 +465,17 @@ public static function getMorphedModel($alias) return static::$morphMap[$alias] ?? null; } + /** + * Get the alias associated with a given Model class name. + * + * @param string $model + * @return false|int|string + */ + public static function getMorphedAlias($model) + { + return array_search($model, static::$morphMap); + } + /** * Handle dynamic method calls to the relationship. * diff --git a/tests/Database/DatabaseEloquentRelationTest.php b/tests/Database/DatabaseEloquentRelationTest.php index 65df35655c26..cfb9512cb719 100755 --- a/tests/Database/DatabaseEloquentRelationTest.php +++ b/tests/Database/DatabaseEloquentRelationTest.php @@ -234,6 +234,16 @@ public function testSettingMorphMapWithNumericKeys() Relation::morphMap([], false); } + public function testGettingAliasFromModelClassName() + { + Relation::morphMap(['user' => 'App\User']); + + $this->assertEquals( + 'user', + Relation::getMorphedAlias('App\User') + ); + } + public function testWithoutRelations() { $original = new EloquentNoTouchingModelStub;