3个表之间的关系

时间:2015-05-21 10:30:25

标签: mysql database laravel-4 eloquent database-schema

我有一个包含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();

我的问题是,如果我对同一列有不同的值,我不知道与哪个广告系列相关联。我该如何解决这个问题?在广告系列和值之间创建关系表是否正确?

2 个答案:

答案 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