Home > front end >  Laravel - Relationship with BelongsToMany - How to use?
Laravel - Relationship with BelongsToMany - How to use?

Time:09-13

I'm having trouble how to use the belongsToMany method of Laravel to create a relationship. I actually do not fully understand the description of the parameters. I have the following situation:

Fields of table products:

  • id
  • ...
  • product_unique_identifier

Fields of table product_images:

  • id
  • app_image_id
  • product_unique_identifier

Fields of table app_images:

  • id
  • ...

Now as you can imagine, I want to use in my Product model as well as in my AppImage model a relationship to the other table using the product_images table. The thing is, that the column product_unique_identifier is not the identity field in the products table, but a field of type string.

One product can have multiple images - one image is always related to one product.

I already tried this in my AppImage model:

public function product() {
    return $this->belongsToMany(\App\Models\Product\Product::class, 'product_images','app_image_id','product_unique_key','id','product_unique_key');
}

This is not working as expected. I already had a look into the Laravel framework code (https://github.com/laravel/framework/blob/9.x/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php), but the explanations of the parameters is still not clear to me (which are pivot and related fields as described in the comments of the properties).

I'm sure it is a beginner question, but can anyone please provide me help in this issue? Many thanks in advance!

CodePudding user response:

Try this

public function product() {
    return $this->belongsToMany(\App\Models\Product\Product::class, 'product_images','app_image_id','product_unique_identifier');
}
  • Related