In the Laravel documentation, there is the following example for retrieving morphedByMany
relations, which are many-to-many polymorphic relations.
Larav
I use a trick here:
Create a Model Taggable
for your connection table taggable
and add a hasMany
relation to the Tag
model.
public function related()
{
return $this->hasMany(Taggable::class);
}
Within your Taggable
model create a morphedTo
relation.
public function taggables()
{
return $this->morphTo();
}
Now you can get all models witch are using the tag by calling:
$tagged = Tag::with('related.taggables');
You should be able to add a relationship on your Tag class as such
public function taggable()
{
return $this->morphedTo();
}
That will use the taggable_id and taggable_type to get the relevant Model that it is tied to.
Did you think to use the "union" function of the collections to merge all the different collection in order to retrieve all what you need?
class Tag extends Model
{
[...]
/**
* Get all of.
*/
public function morphed()
{
return $this->video->union($this->posts)->all();
}
}