我是codeigniter的新手,在我的项目中使用datamapper(版本1.8)。我在mysql数据库中存储数据时遇到了一些问题。
这是我的表格结构如下:
表:target_numbers [与广告系列有一对一的关系] column:id,phone_number
表:track_numbers [与广告系列有一对一的关系] column:id,phone_number
表:广告系列[与目标和广告有一对多的关系;追踪号码] column:id,title,type
表:map_numbers column:id,target_number_id,track_number_id,campaign_id
要创建新广告系列,用户必须先从下拉字段中选择目标号码 并在输入字段中针对所选目标编号输入跟踪编号。将有一个“添加另一个”按钮,以针对单独的选定目标编号创建另一个跟踪编号。这个过程可以多次。
但我无法在数据库中存储campain数据和跟踪号码信息。
任何人都可以建议我应该是什么样的表格结构以及如何在这种情况下存储价值。
答案 0 :(得分: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艺术中):
+------------------+ +----------+ | map_numbers | | campaign | +------------------+ +----------------+ +----------+ | id | | target_numbers | | id |<--| campaign_id | +----------------+ +----------+ | target_number_id |---->| id | | track_number_id |-+ +----------------+ +------------------+ | | +----------------+ | | track_numbers | | +----------------+ +-->| id | +----------------+
other_field
和class
参数仅在您要使用$has_many
关联的复数形式时才需要。