7 months ago

Three Way Relationship or Relationship with a Relationship?

Posted 7 months ago by JohnBeales

I'm puzzling over how to set up this relationship in Laravel, (I'm converting a legacy app):

I have Repair Shops, which provide different types of repairs, on different brands of vehicles.

For example, Shop A might repair Brakes but not Exhaust Systems for Ford vehicles. Shops are required to say what services they provide, (Exhaust repair), but adding a brand is optional. I have Shop, Service, and Brand tables in the DB. Shop and Service have a belongsToMany relationship using the provides_service pivot table. In the legacy system I have a 3-way pivot table to specify what Services can be done to each Brand in each Shop.

Laravel doesn't seem to do 3-way relationships well, (or does it? If so, point me there!). So, I feel like it would make sense to create a belongsToMany between the provides_service relation and the Brand. So, is there a way to set up a relationship between a Model and another Relationship in Laravel, or do I have to create a ProvidesService model? Creating a ProvidesService model seems wasteful, but I'm not sure what else to do here.

Please sign in or create an account to participate in this conversation.