Working with pivot table(many-to-many) relationship in Laravel with Example
While working with many to many relationship, you need a reference table that holds id of linked table.Let's assume you have two table Article
and Category
and articles belongs to many category and category has many articles in this case Eloquent provides a easy way to interact with these tables.
When you are working with large, detailed database tables then pivot table is helpfull to extract the records.
In Laravel 4.2, you are using attach and detach method to insert and delete record from pivot table.
There are some changes in Laravel 5.2 for attach and detach records, In Laravel 5.2 you may use sync
method instead of attach and detach.
The sync
method takes the id of reference table and place them in intermediate table. If any id that is not given in array will be removed from intermediate table.
- $article->categories()->sync([1, 2, 3]) ;
If Pivot table have extra columns and you want to fetch them then you have to identify in your model while defining the relationship.
- return $this->belongsToMany('Article')->withPivot('details');