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.
Add support for models that override Eloquent's
newCollection()
method with a custom collection type. Do this by executing the relationship on the model then executing that relationship'snewCollection()
method to see what type of collection class is returned.This also removes the the now-unused
Barryvdh\LaravelIdeHelper\Console\ModelsCommand::getClassName()
method since relationship properties aren't determined with as much string logic as before.This change has one side-effect. Since it determines relationship property types by executing the relationship it now puts fully-qualified model class names into the classes' docblock tags instead of class alias names or class names without their namespace if the model and its related model are in the same namespace. For instance, what may have been rendered as:
is now:
Note how every type hint is now fully qualified and unaliased, but it uses the custom collection class. It's a little wordier, but it's still readable by IDEs. I've tested this out on some of my Laravel projects and haven't seen any other side effects. Let me know what you think!