【问题标题】:Relationship between 3 tables3张表之间的关系
【发布时间】:2015-08-02 23:15:29
【问题描述】:

我有一个带有 3 个表的 mysql 数据库:

- 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();

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

【问题讨论】:

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


    【解决方案1】:

    这不是(还?)一个答案,但如果结构更像这样,对我们其他人来说可能会更明显:

    Campaigns
    campaign_id *
    code
    name
    
    Columns
    column_id *
    name
    
    campaigns_columns
    Campaign_id *
    Column_id *
    

    * =(主键的组成部分)

    【讨论】:

      【解决方案2】:

      似乎设计的表的结构与其基础域不匹配。

      如果可以为给定的列 id (idColumn) 分配多个值,则需要在表 Values 中引入一个额外的关键字段(实际上是一个campaignId),或者创建一个额外的表来关联campaig id、列id 和值 id。第三个选项 - 这是我实际推荐的 - 是统一表格列和值。

      【讨论】:

        猜你喜欢
        • 2019-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-07
        • 2019-10-18
        • 1970-01-01
        相关资源
        最近更新 更多