Add support for resolving model factories without HasFactory trait or factory() method #985
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR extends Utils::getModelFactory() to support more flexible factory resolution scenarios, particularly for applications that:
Do not use the HasFactory trait on their Eloquent models,
Or define factories in standard locations, such as nested directories under database/factories/.
✅ Benefits
What's New
✅
Utils::resolveFactory()
factory()
method (Laravel 8+ style).database/factories/**
for{ModelName}Factory.php
, even inside subdirectories.null
if no factory is found, instead of throwing, giving the caller more control.✅
Utils::findFactoryClassForModel()
🛠 Updated
getModelFactory()
to use the above methods and maintain compatibility with:factory(Model::class)
(Laravel <8),state()
definitions,has()
,for()
,hasAttached()
).