当我保存具有两个枚举字段的数据时,设法管理消息的状态,即用户读取或未读取。我使用枚举('1','0')来管理状态'1'=>读和'0'=>未读
以下代码将保存邮件,但在状态栏中保存空文件
$data = array(
'message' => 'test message',
'status' => 1
);
$this->Message->save($data);
数据库结构如下
Field Type Collation Null Key Default
------------------ ------------- ----------------- ------ ------ -------
id bigint(20) (NULL) NO PRI (NULL)
message varchar(255) (NULL) NO MUL (NULL)
status enum('0','1') latin1_swedish_ci NO MUL 0
即使我已将数据数组用作
$data = array(
'message' => 'test message',
'status' => '1'
);
$data = array(
'message' => 'test message',
'status' => "'".1."'"
);
答案 0 :(得分:4)
在MySql文档之外,请说明以下内容: "如本节后面所述 - 我们强烈建议您不要使用数字作为枚举值"
答案 1 :(得分:4)
您正在使用cakephp - 它(如文档所述)不支持ENUM。 在你的情况下,首先使用枚举是错误的。枚举用于两种以上的状态,应该模拟为ArrayDatasource或模型(就像我一样)。
但是“read / unread”是一个布尔值(两个确定的状态!)。
并且有一种简单的方法可以正确地完成此任务:
tinyint(1) [unsigned] [default 0]
cake会自动假设这是一个布尔值,并将其表单字段转换为一个复选框。