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?
                  
                  
                
I didn't read it properly but OneToMany relation is only a virtual relation in ORM, at database level you can only have ManyToOne relation
No idea? 🤔
Обсуждают сегодня