2014-01-12 1 views
6

Как я могу сделать поле financial_year уникальным с помощью миграции Codeigniter Dbforge?Создать уникальное поле в Codeigniter DBForge Migration

function up() { 

    $this->dbforge->add_field(array(
     'id' => array(
      'type'    => 'INT', 
      'constraint'  => 11, 
      'unsigned'   => TRUE, 
      'auto_increment' => TRUE 
     ), 
     'financial_year' => array(
      'type'    => 'VARCHAR', 
      'constraint'  => 20 
     ), 
     'start_date' => array(
      'type'    => 'DATE' 
     ), 
     'end_date' => array(
      'type'    => 'DATE' 
     ), 
     'status' => array(
      'type'    => "ENUM", 
      'constraint'  => "'Active','Inactive'", 
      'default'   => "Active" 
     ), 
     'created_on' => array(
      'type'    => 'TIMESTAMP' 
     ) 
    )); 

    $this->dbforge->add_key('id', TRUE); // add `id` as primary key 

    $this->dbforge->create_table('financial_year'); // create table schema 
} 

ответ

8

В драйвере базы данных нет возможности сделать это.

либо написать SQL для создания таблицы вручную, либо (и это не то, что я бы рекомендовал) изменить DB_forge.php и драйвер базы данных. (например, mysql_forge.php), чтобы иметь уникальные ключи. глядя на код, я предполагаю, что у вас будет просто переменная класса с именем «unique_keys» и следуйте коду, где «ключи» и «первичные ключи» должны добавить уникальные ключи.

другой вариант - использовать dbforge as написано, то просто modifiy таблицу после создания

$this->db->query('ALTER TABLE `financial_year` ADD UNIQUE INDEX (`financial_year`)'); 
+2

Если это не будет '' '$ this-> db-> query' ''? Это перерывает мою миграцию. – sinhix

+0

Правильно - это должен быть: '$ this-> db-> query ('ALTER TABLE financial_year ADD UNIQUE INDEX (financial_year)');' –

3

Этот вопрос помечается как CodeIgniter2 - @ pgee70 Ответ правильный

но

CodeIgniter3 поддерживает создание уникальных месторождений. Просто добавьте

'unique'   => TRUE 

в поле

В этом случае:

'financial_year' => array(
     'type'    => 'VARCHAR', 
     'constraint'  => 20, 
     'unique'   => TRUE 
    ), 

см CodeIgniter user_guide

 Смежные вопросы

  • Нет связанных вопросов^_^