Open salaback opened 1 year ago
What protected methods do you need to make public? EmbedsRelations
has 2 protected methods: embedsMany
and embedsOne
. The methods in HybridRelations
are public already.
Sorry that wasn't clear, yes it is embedsMany
and embedsOne
that I need public.
Embedded relation needs a complete rewrite after that it'll be made public possibly until that it won't be touched.
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" ?
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" ?
Are you looking for this?
use App\Models\Order;
use App\Models\Customer;
Order::resolveRelationUsing('customer', function (Order $orderModel) {
return $orderModel->belongsTo(Customer::class, 'customer_id');
});
Ref: https://laravel.com/docs/10.x/eloquent-relationships#dynamic-relationships
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: