Set up many to many relationship in laravel eloquent

前端 未结 3 743
温柔的废话
温柔的废话 2021-01-27 08:59

What is the best practice to setup many to many relationship with post and categories in laravel eloquent? Do I create a separate model for pivot table?

This is how I de

3条回答
  •  太阳男子
    2021-01-27 09:39

    The best way to do this is:

    public function categories(){
       return $this->belongsToMany('App\Models\Categories', 'categories_posts', 'post_id', 'category_id');
    }
    

    And then in your Categories model:

    public function posts(){
           return $this->belongsToMany('App\Models\Posts', 'categories_posts', 'category_id', 'post_id');
        }
    

    belongsToMany() method can receive up to 4 parameters, the first one is the location of your model to link, the second is the name of the pivot table, the third one is the current model foreign key and the fourth one is the other's model foreign key.

    You can also specify extra data on pivot table using the withPivot() method like this for example:

    public function categories(){
           return $this->belongsToMany('App\Models\Categories', 'categories_posts', 'post_id', 'category_id')->withPivot('quantity');
        }
    

    And then for attaching you can do as follows:

    $post = Posts:find(1);
    $post->categories()->attach($category_id, ['quantity' => 2]);
    

    But please, refer to Laravel's official documentation:

    https://laravel.com/docs/5.6/eloquent-relationships

提交回复
热议问题