我有一个包含3个表的mysql DB:
- Campaigns
id
code
name
- Columns
id
name
- Values
id
idColumn
value
广告系列和列之间的关系是多对多的:
- ColumnsCampaign
id
idColumn
idCampaign
和列和值之间的关系是一对多。
我有这个查询返回每个广告系列的所有值:
return Campaigns::addSelect('id','code','name')
->whereHas('typeCampaign', function ($q) use ($idTypeCampaign,$idMenu)
{
$q->where('typeCampaign.id',$idTypeCampaign)
->whereHas('menus', function ($q) use ($idMenu){
$q->where('menus.id',$idMenu);
});
})//this part define which campaign i want with a certain menu
->with('columns.values')//with this i include the campaign columns and its values
->get();
我的问题是,如果我对同一列有不同的值,我不知道与哪个广告系列相关联。我该如何解决这个问题?在广告系列和值之间创建关系表是否正确?
答案 0 :(得分:0)
设计表的结构似乎与其底层域不匹配。
如果可以将mutliple值分配给给定的列id(idColumn),则需要在表值中引入额外的键字段(实际上是campaignId),或者创建一个关联Campaig id,列的额外表id和值id。第三个选项 - 这是我实际推荐的 - 是统一表格列和值。
答案 1 :(得分:0)
这不是(还是?)一个答案,但如果结构更像是这样,对我们其他人来说可能会更明显一点:
Campaigns
campaign_id *
code
name
Columns
column_id *
name
campaigns_columns
Campaign_id *
Column_id *
*
=(组件)PRIMARY KEY