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:
idapp_image_idproduct_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');
}
