如何使用financial_year
迁移将Codeigniter 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
}
答案 0 :(得分:10)
在数据库驱动程序中没有选项。
编写SQL以手动创建表,或者(这不是我建议的)更改DB_forge.php和数据库驱动程序。 (例如mysql_forge.php)拥有唯一键。查看代码我想你会有一个名为'unique_keys'的类变量,并按照代码中的'keys'和'primary keys'来添加唯一键。
另一种选择是使用dbforge编写,然后只需在创建后修改表
$this->db->query('ALTER TABLE `financial_year` ADD UNIQUE INDEX (`financial_year`)');
答案 1 :(得分:7)
此问题标记为CodeIgniter2 - @ pgee70答案是正确的
但
CodeIgniter3支持创建唯一字段。 只需添加
'unique' => TRUE
到现场
在这种情况下:
'financial_year' => array(
'type' => 'VARCHAR',
'constraint' => 20,
'unique' => TRUE
),