See https://laravel.com/docs/8.x/eloquent-relationships#dynamic-relationships
Adds dynamic relationship to Eloquent ORM models
composer require i-rocky/eloquent-dynamic-relation
Add the trait Rocky\Eloquent\HasDynamicRelation to your model as following
use Rocky\Eloquent\HasDynamicRelation;
class MyModel extends Model {
use HasDynamicRelation;
}Now define a relationship somewhere
In Laravel you can add this in your AppServiceProvider's boot method
MyModel::addDynamicRelation('some_relation', function (MyModel $myModel) {
return $myModel->hasMany(SomeRelatedModel::class);
});Now you can use the relation some_relation as if it's defined in your MyModel class.
Problem & Inspiration: https://stackoverflow.com/a/54065463/4452100