2010-06-13 2 views
0

Ma structure de table pour l'utilisateur et son détail d'adresse est la suivanteproblème dans l'enregistrement des modèles multi niveau dans YII

CREATE TABLE tbl_users (
    id bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    loginname varchar(128) NOT NULL, 
    enabled enum("True","False"), 
    approved enum("True","False"), 
    password varchar(128) NOT NULL, 
    email varchar(128) NOT NULL, 
    role_id int(20) NOT NULL DEFAULT '2', 
    name varchar(70) NOT NULL, 
    co_type enum("S/O","D/O","W/O") DEFAULT "S/O", 
    co_name varchar(70), 
    gender enum("MALE","FEMALE","OTHER") DEFAULT "MALE", 
    dob date DEFAULT NULL, 
    maritalstatus enum("SINGLE","MARRIED","DIVORCED","WIDOWER") DEFAULT "MARRIED", 
    occupation varchar(100) DEFAULT NULL, 
    occupationtype_id int(20) DEFAULT NULL, 
    occupationindustry_id int(20) DEFAULT NULL, 
    contact_id bigint(20) unsigned DEFAULT NULL, 
    signupreason varchar(500), 
    PRIMARY KEY (id), 
    UNIQUE KEY loginname (loginname), 
    UNIQUE KEY email (email), 
    FOREIGN KEY (role_id) REFERENCES tbl_roles (id), 
    FOREIGN KEY (occupationtype_id) REFERENCES tbl_occupationtypes (id), 
    FOREIGN KEY (occupationindustry_id) REFERENCES tbl_occupationindustries (id), 
    FOREIGN KEY (contact_id) REFERENCES tbl_contacts (id) 
) ENGINE=InnoDB; 

CREATE TABLE tbl_contacts (
    id bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    contact_type enum("cres","pres","coff"), 
    address varchar(300) DEFAULT NULL, 
    landmark varchar(100) DEFAULT NULL, 
    district_id int(11) DEFAULT NULL, 
    city_id int(20) DEFAULT NULL, 
    state_id int(20) DEFAULT NULL, 
    pin_id bigint(20) unsigned DEFAULT NULL, 
    area_id bigint(20) unsigned DEFAULT NULL, 
    po_id bigint(20) unsigned DEFAULT NULL, 
    phone1 varchar(20) DEFAULT NULL, 
    phone2 varchar(20) DEFAULT NULL, 
    mobile1 varchar(20) DEFAULT NULL, 
    mobile2 varchar(20) DEFAULT NULL, 
    PRIMARY KEY (id), 
    FOREIGN KEY (district_id) REFERENCES tbl_districts (id), 
    FOREIGN KEY (city_id) REFERENCES tbl_cities (id), 
    FOREIGN KEY (state_id) REFERENCES tbl_states (id) 
) ENGINE=InnoDB; 

CREATE TABLE tbl_states (
    id int(20) NOT NULL AUTO_INCREMENT, 
    name varchar(70) DEFAULT NULL, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB; 


CREATE TABLE tbl_districts (
    id int(20) NOT NULL AUTO_INCREMENT, 
    name varchar(70) DEFAULT NULL, 
    state_id int(20) DEFAULT NULL, 
    PRIMARY KEY (id), 
    FOREIGN KEY (state_id) REFERENCES tbl_states (id) 
) ENGINE=InnoDB; 


CREATE TABLE tbl_cities (
    id int(20) NOT NULL AUTO_INCREMENT, 
    name varchar(70) DEFAULT NULL, 
    district_id int(20) DEFAULT NULL, 
    state_id int(20) DEFAULT NULL, 
    PRIMARY KEY (id), 
    FOREIGN KEY (district_id) REFERENCES tbl_districts (id), 
    FOREIGN KEY (state_id) REFERENCES tbl_states (id) 
) ENGINE=InnoDB; 

La relation est la suivante utilisateur a plusieurs contacts i.e. Adresse permanente, Adresse actuelle, Adresse Bureau. Chaque contact a l'état et la ville.

utilisateur-> Contact-> Etat comme celui-ci

Comment sauvegarder les modèles de cette structure en une seule fois.

S'il vous plaît fournir une réponse dès que possible

Répondre

0

Je crois que j'ai eu un problème similaire sauvegarde d'un modèle multi nivelé avec de nombreuses clés étrangères. Il ne semble pas qu'il peut facilement être enregistré dans « un go » ... Jetez un oeil à my solution here

0

Vous pouvez jeter un oeil à des modèles GII extension sur le code google -

gii templates on google code

- >> Il pourrait être mieux documenté, mais il essaie de faire ce dont vous avez besoin. (Cela pourrait vous faire gagner du temps si vous l'intégrez bien, mais je pourrais même envisager de le coder à la main si j'étais vous.)

Questions connexes