0

私は codeigniter を初めて使用し、プロジェクトで datamapper (バージョン 1.8) を使用しています。mysql データベースにデータを保存する際にいくつかの問題に直面しています。

次のように私のテーブル構造は次のとおりです。

テーブル: target_numbers [キャンペーンと 1 対 1 の関係があります] カラム: id , phone_number

表: track_numbers [キャンペーンと1対1の関係] column: id , phone_number

表: キャンペーン [ターゲットとトラック番号と 1 対多の関係があります] 列: id 、タイトル、タイプ

表: 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'));
}

したがって、あなたの構造は次のようになります(輝かしいアスキーアートで):

               +------------------+
+---------+ | マップ番号 |
| | キャンペーン | +-----------------+ +----------------+  
+---------+ | ID | | | ターゲット番号 |
| | ID |<--| キャンペーン ID | +----------------+
+---------+ | target_number_id |---->| ID |
               | | track_number_id |-+ +----------------+
               +--------------------+ |
                                    | | +----------------+
                                    | | | | トラック番号 |
                                    | | +----------------+
                                    +-->| ID |
                                        +----------------+

other_fieldおよびパラメータはclass、関連付けに複数形を使用する場合にのみ必要です$has_many

于 2013-06-21T16:10:24.423 に答える