Many-to-many relation on laravel
I have a question about many-to-many relations in laravel 5.5
I have these tables named ads
, attributes
, categories
, ads_attributes
categories
is one-to-many related to ads
, so is attributes
and ads
and attributes
are many-to-many related in ads_attributes
The problem is: the primary keys in attributes
are ['name', 'category_id']
(I know it’s stupid but that’s what is implemented atm and I’m not gonna restructure my tables)
So in ads_attributes
I have these columns: ['attribute_name', 'category_id', 'ad_id']
Laravel belongsToMany()
method gives me this:
select `attributes`.*, `ads_attributes`.`ad_id` as `pivot_ad_id`, `ads_attributes`.`attribute_name` as `pivot_attribute_name`, `ads_attributes`.`value` as `pivot_value` from `attributes` inner join `ads_attributes` on `attributes`.`name` = `ads_attributes`.`attribute_name` where `ads_attributes`.`ad_id` in ('11')
while I need something like:
select `attributes`.*, `ads_attributes`.`ad_id` as `pivot_ad_id`, `ads_attributes`.`attribute_name` as `pivot_attribute_name`, `ads_attributes`.`value` as `pivot_value` from `attributes` inner join `ads_attributes` on `attributes`.`name` = `ads_attributes`.`attribute_name` and `attributes`.`category_id` = `ads_attributes`.`category_id` where `ads_attributes`.`ad_id` in ('11')
Any idea?
P.s sorry about my bad English, it’s not my mother tongue
from Laravel Questions and Answers https://laravelquestions.com/laravel/many-to-many-relation-on-laravel/
via Lzo Media
No comments:
Post a Comment