In the Laravel documentation, there is the following example for retrieving morphedByMany relations, which are many-to-many polymorphic relations.
Laravel Many to Many polymorphic relations documentation
namespace App;  use Illuminate\Database\Eloquent\Model;  class Tag extends Model {     /**      * Get all of the posts that are assigned this tag.     */     public function posts()     {         return $this->morphedByMany('App\Post', 'taggable');     }      /**      * Get all of the videos that are assigned this tag.      */     public function videos()     {         return $this->morphedByMany('App\Video', 'taggable');     } } How would I get a list of all morphed relations in one query / collection, for instance, posts and videos, and then if I later added photos (or anything), that too?
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 which are using the tag by calling:
$tagged = Tag::with('related.taggables'); 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();     } } If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With