From 70a73ab5984f7641f18f43fd39d40dc77a99eb30 Mon Sep 17 00:00:00 2001 From: btaskew Date: Thu, 24 Sep 2020 08:11:16 +0100 Subject: [PATCH] Check for method existence --- src/Illuminate/Database/Eloquent/Factories/Factory.php | 4 +++- tests/Database/DatabaseEloquentFactoryTest.php | 6 ------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Factories/Factory.php b/src/Illuminate/Database/Eloquent/Factories/Factory.php index 121c89006cb6..20bb924c0daf 100644 --- a/src/Illuminate/Database/Eloquent/Factories/Factory.php +++ b/src/Illuminate/Database/Eloquent/Factories/Factory.php @@ -707,7 +707,9 @@ public function __call($method, $parameters) $relationshipClass = get_class($this->newModel()->{$relationship}()->getRelated()); - $factory = $relationshipClass::newFactory() ?: static::factoryForModel($relationshipClass); + $factory = method_exists($relationshipClass, 'newFactory') && $relationshipClass::newFactory() + ? $relationshipClass::newFactory() + : static::factoryForModel($relationshipClass); if (Str::startsWith($method, 'for')) { return $this->for($factory->state($parameters[0] ?? []), $relationship); diff --git a/tests/Database/DatabaseEloquentFactoryTest.php b/tests/Database/DatabaseEloquentFactoryTest.php index 8df70dc7fb98..fd4c064c33bd 100644 --- a/tests/Database/DatabaseEloquentFactoryTest.php +++ b/tests/Database/DatabaseEloquentFactoryTest.php @@ -399,8 +399,6 @@ public function definition() class FactoryTestPost extends Eloquent { - use HasFactory; - protected $table = 'posts'; public function user() @@ -435,8 +433,6 @@ public function definition() class FactoryTestComment extends Eloquent { - use HasFactory; - protected $table = 'comments'; public function commentable() @@ -459,8 +455,6 @@ public function definition() class FactoryTestRole extends Eloquent { - use HasFactory; - protected $table = 'roles'; public function users()