2015-07-05 3 views
6

Может ли кто-нибудь помочь мне добавить внешний ключ и базу данных миграции Codeigniter? Это код:добавить внешний ключ в миграции Codeigniter

public function up() 
{ 
    $this->dbforge->add_field(array(
    'ID_PELAYANAN' => array(
    'type' => 'INT', 
    'constraint' => 50, 
    'auto_increment' => TRUE 
    ), 

    'THBLMUT' => array(
    'type' => 'VARCHAR', 
    'constraint' => '6', 
    ), 

    'ID_DIST' => array(
    'type' => 'VARCHAR', 
    'constraint' => '2', 
    ), 

    'ID_AREA' => array(
    'type' => 'VARCHAR', 
    'constraint' => '5', 
    ), 

    'ID_RAYON' => array(
    'type' => 'VARCHAR', 
    'constraint' => '5', 
    ), 

    'N_RAYON' => array(
    'type' => 'CHAR', 
    'constraint' => '70', 
    ), 

    )); 
    $this->dbforge->add_key('ID_PELAYANAN', TRUE); 
    $this->dbforge->create_table('pelayanan'); 
} 
public function down() 
{ 
    $this->dbforge->drop_table('pelayanan'); 
    } 
} 

Я хочу сделать «ID_AREA», «ID_RAYON» в качестве ключа в иностранном таблице. Как я могу это решить?

ответ

1

Вы можете написать обычный SQL-запрос, чтобы сделать это после того, как

$this->dbforge->create_table('pelayanan'); 

пример ниже

$this->db->query('ALTER TABLE `pelayanan` ADD FOREIGN KEY(`ID_AREA`) REFERENCES 'the_other_table_name'(`ID_AREA`) ON DELETE CASCADE ON UPDATE CASCADE;'); 

Вы можете сделать то же самое для другого внешнего ключа

0

Кто-то создал способ Чтобы сделать это здесь: https://github.com/bcit-ci/CodeIgniter/issues/1762. К сожалению, по состоянию на данный момент вы все еще не можете сделать это с готовым кодом. Путь Godluck работает очень хорошо.

5

Вот два способа сделать это. Первый работает с create_table, а другой может быть сделан при добавлении поля в существующую таблицу.

$this->dbforge->add_field('CONSTRAINT FOREIGN KEY (id) REFERENCES table(id)'); 

$this->dbforge->add_column('table',[ 
    'CONSTRAINT fk_id FOREIGN KEY(id) REFERENCES table(id)', 
]); 
Смежные вопросы