Open
Description
Is your feature request related to a problem?
When trying to insert relationships into models via a service provider, it is not possible because the mongo specific methods are protected. Laravel has these methods public for this reason.
Describe the solution you'd like
Swap out protected for public methods
Describe alternatives you've considered
Other than forking the package I don't see a work around.
I could create a public method on the target model which then returns the protected on, however this feels rather hacky and creates requirements on a third party package.
Additional context
Inserting a relationship via the service provider is not the most well documented features, but it is usefully for being able to decouple packages and works as follows:
public function boot(): void
{
Parent::resolveRelationUsing('children', function ($parent) {
return $parent->hasMany(Child::class);
});
}
Activity
GromNaN commentedon Jul 8, 2023
What protected methods do you need to make public?
EmbedsRelations
has 2 protected methods:embedsMany
andembedsOne
. The methods inHybridRelations
are public already.salaback commentedon Jul 8, 2023
Sorry that wasn't clear, yes it is
embedsMany
andembedsOne
that I need public.divine commentedon Jul 8, 2023
Embedded relation needs a complete rewrite after that it'll be made public possibly until that it won't be touched.
EmbedsRelations::embedsMany
andEmbedsRelations::embedsOne
public #2588GromNaN commentedon Aug 30, 2023
I opened #2588 to make this methods public.
For my culture, do you have any documentation on how to "insert relationships into models via a service provider" ?
alaminfirdows commentedon Nov 13, 2023
Are you looking for this?
Ref: https://laravel.com/docs/10.x/eloquent-relationships#dynamic-relationships