0

我是 codeigniter 的新手,在我的项目中使用 datamapper(1.8 版)。我在 mysql 数据库中存储数据时遇到了一些问题。

这是我的表结构如下:

表:target_numbers [与活动具有一对一关系] 列:id , phone_number

表:track_numbers [与活动具有一对一关系] 列:id , phone_number

表:广告系列 [与目标和曲目编号具有一对多关系] 列:id、title、type

表:map_numbers 列:id、target_number_id、track_number_id、campaign_id

要创建新的广告系列,用户必须首先从下拉字段中选择目标编号,然后在输入字段中针对所选目标编号输入跟踪编号。将有一个“添加另一个”按钮来针对单独的选定目标编号创建另一个跟踪编号。这个过程可以多次。

但我无法在数据库中存储营销数据和跟踪号码信息。

任何人都可以建议我什么应该是正确的表结构以及在这种情况下如何存储价值。

4

1 回答 1

1

我认为您应该为 map_numbers 表创建一个模型,并使该模型与活动相关,并且活动不应与 track_numbers 或 target_numbers 直接相关。像这样的东西:

Class Campaign extends DataMapper {
    public $has_many = array('map_numbers' => array('class' => 'Map_Number'));
}
Class Map_Number extends DataMapper {
    public $has_one = array(
        'campaign'      => array('other_field' => 'map_numbers'),
        'target_number' => array('other_field' => 'map_numbers'),
        'track_number'  => array('other_field' => 'map_numbers'),
    );
}
class Target_Number extends DataMapper {
    public $has_many = array('map_numbers' => array('class' => 'Map_Number'));
}
class Track_Number extends DataMapper {
    public $has_many = array('map_numbers' => array('class' => 'Map_Number'));
}

所以你的结构看起来像这样(在光荣的 ascii 艺术中):

               +------------------+
+----------+ | 地图编号 |
| 活动 | +-----------------+ +----------------+  
+----------+ | 编号 | | 目标号码 |
| 编号 |<--| 活动 ID | +----------------+
+----------+ | target_number_id |---->| 编号 |
               | track_number_id |-+ +----------------+
               +------------------+ |
                                    | +----------------+
                                    | | 轨道号码 |
                                    | +----------------+
                                    +-->| 编号 |
                                        +----------------+

other_field和参数仅在class您想使用复数形式进行$has_many关联时才需要。

于 2013-06-21T16:10:24.423 回答