Cakephp+;枚举支持:无法保存或选择枚举0和1

Cakephp+;枚举支持:无法保存或选择枚举0和1,cakephp,enums,Cakephp,Enums,当我保存数据时,需要管理两个枚举字段来管理消息的状态,即用户已读或未读。我正在使用enum('1','0')来管理状态'1'=>已读和'0'=>未读 以下代码将保存消息,但状态列保存为空字段 $data = array( 'message' => 'test message', 'status' => 1 ); $this->Message->save($data); 数据库结构如下 F

当我保存数据时,需要管理两个枚举字段来管理消息的状态,即用户已读或未读。我正在使用enum('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."'"
             );

在MySql文档中,声明如下: “如本节后面所述,我们强烈建议您不要将数字用作枚举值”


您正在使用cakephp-它(如文档所示)不支持枚举。 在您的情况下,一开始甚至使用枚举都是错误的。枚举用于两个以上的状态,应该作为ArrayDatasource或在您的模型中进行仿真(就像我所做的那样)

但是“read/unread”是一个布尔值(两个确定状态!)

有一种简单的方法可以正确实现这一点:

tinyint(1) [unsigned] [default 0]

cake将自动假定这是一个布尔值,并将其表单字段转换为一个复选框。

是否不可能使用“bool”类型?感谢您的回复Tim Joyce,mark,Daniel,我无法更改数据库架构,因为相同的数据库用于为I-phone和android应用程序创建web服务。嘿,mark,您介意解释一下吗,或者和我分享一下,你是如何模仿“ArrayDatasource”的。这听起来是一个不错的方法。它的链接应该主要针对2.x和3.x。