为什么我的表单没有保存正确的值?

时间:2010-10-01 16:07:54

标签: cakephp

好的,在CakePHP中,我在视图add.ctp中有以下代码:

echo $this->Form->radio('color', array('1' => 'red', '2' => 'green', '3' => 'blue'), array('value' => false));

导致正确的html:

<fieldset>
    <legend>Color</legend>
    <input type="radio" name="data[Some][color]" id="SomeColor1" value="1"  />
    <label for="SomeColor1">red</label>
    <input type="radio" name="data[Some][color]" id="SomeColor2" value="2"  />
    <label for="SomeColor2">green</label>
    <input type="radio" name="data[Some][color]" id="SomeColor3" value="3"  />
    <label for="SomeColor3">blue</label>
</fieldset>

例如,如果我选中“绿色”,则debug($this->data);会产生预期结果:

Array
(
    [Some] => Array
        (
            [color] => 2
        )

)

但是,CakePHP在表中插入了错误的数据:

INSERT INTO `somes` (`color`) VALUES (1)

有什么想法在这里发生了什么?我错过了什么?

修改

  • 我使用$this->Some->save($this->data),颜色的数据类型为TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
  • 为了示例,我删除了其他数据,但基本上,其他所有工作都很正常,并保存了记录。

2 个答案:

答案 0 :(得分:3)

cakePHP认为tinyInt(1)是一个布尔值,所以.. 0 = 0且&gt; 0 = 1

答案 1 :(得分:2)

这是因为TINYINT(1)。更改它,例如TINYINT(3),您的数据将被正确保存。