我有一个具有以下结构的数据库表:
CREATE TABLE IF NOT EXISTS `users` (
`id` varchar(15) NOT NULL,
`userName` varchar(255) NOT NULL,
`pass_word` varchar(32) NOT NULL,
`privilege` char(1) DEFAULT 'C',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256;
您可能会注意到 id
字段不是int
。它是varchar
。问题在于,当我尝试将此表烘焙到模型,控制器和使用脚手架时,我得到了以下用户视图的新屏幕截图:
您应该注意到没有id字段,我想将其作为varchar输入。同时将id的验证设置为字母数字和notempty,可以防止添加记录。
是否有任何解决方案,无需更改表结构?
答案 0 :(得分:2)
要使其可见,请在添加视图中添加以下行:
echo $this->Form->input('id', array('type' => 'text'));
但是,我不会让主键可编辑,这将导致各种问题。如果您有链接到此记录的外键,然后管理员更改主键,会发生什么?坏消息。
我将主键设置为整数自动增量字段,然后为user_code或类似字段设置另一个字段。这将使您仍然拥有可编辑的用户密钥,这不会影响您的关系。