2014-01-12 72 views
6

我怎樣才能讓使用Codeigniter Dbforge遷移financial_year字段作爲獨特之處?在笨DBForge遷移創造出獨特的領域

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'的類變量,並按照代碼'keys'和'primary keys'添加唯一鍵。

另一個選項是使用dbforge作爲寫的,然後就modifiy表創建

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

它不應該是'''$這個 - > DB-> query' ''?這打破了我的移民 – sinhix

+0

正確的 - 它應該是:'$這個 - > DB->查詢( '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