Skip to main content
Quick Tip

Belongs to Many Pivot table naming

To determine the table name of the relationship's intermediate table, Eloquent will join the two related model names in alphabetical order.

This would mean a join between Post and Tag could be added like this:

class Post extends Model
{
public $table = 'posts';
 
public function tags()
{
return $this->belongsToMany(Tag::class);
}
}

However, you are free to override this convention, and you would need to specify the join table in the second argument.

class Post extends Model
{
public $table = 'posts';
 
public function tags()
{
return $this->belongsToMany(Tag::class, 'posts_tags');
}
}

If you wish to be explicit about the primary keys you can also supply these as third and fourth arguments.

class Post extends Model
{
public $table = 'posts';
 
public function tags()
{
return $this->belongsToMany(Tag::class, 'post_tag', 'post_id', 'tag_id');
}
}

Tip given by @iammikek

Enjoyed This Tip?

Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.