2013-06-20 71 views
0

我是codeigniter中的新成員,在我的項目中使用datamapper(版本1.8)。我正在面臨一些問題,以在MySQL數據庫中存儲數據。Codeigniter datamapper ::無法在數據庫中存儲值

這裏是我的表結構如下:

表:target_numbers [有一對一的關係與活動] 柱:

表ID,PHONE_NUMBER:track_numbers [有一對一的關係與活動] 柱:ID,PHONE_NUMBER

表:廣告活動[具有一個與目標&軌道號許多關係] 柱:ID,標題,類型

表:map_numbers 列:ID,target_number_id,track_number_id,CAMPAIGN_ID

要創建新的活動用戶必須首先從下拉字段 選擇目標值,並在輸入方面對選定的目標號碼輸入的一個跟蹤號碼。將出現一個「添加另一個」按鈕,以針對單獨選定的目標編號創建另一個追蹤編號。這個過程可以是幾次。

但我無法將競賽數據和追蹤號碼信息存儲在數據庫中。

任何人都可以請我建議我應該是什麼樣的正確的表結構,以及如何在這種情況下存儲價值。

+0

那麼一個廣告系列可以有多個跟蹤和目標號碼對? – complex857

+0

是活動可以有多個追蹤和目標號碼@ complex857 – user2198137

回答

1

我認爲你應該爲map_numbers表創建一個模型,並且使與廣告系列和廣告系列相關的模型不應該與track_numbers或target_number直接相關。事情是這樣的:

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藝術):如果你想使用複數形式爲$has_many

 
       +------------------+ 
+----------+ | map_numbers | 
| campaign | +------------------+  +----------------+ 
+----------+ | id    |  | target_numbers | 
| id |<--| campaign_id  |  +----------------+ 
+----------+ | target_number_id |---->|  id  | 
       | track_number_id |-+ +----------------+ 
       +------------------+ | 
            | +----------------+ 
            | | track_numbers | 
            | +----------------+ 
            +-->|  id  | 
             +----------------+ 

other_fieldclass參數只需要關聯。

+0

感謝您的答覆 – user2198137

相關問題