好的,在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
。答案 0 :(得分:3)
cakePHP认为tinyInt(1)是一个布尔值,所以.. 0 = 0且&gt; 0 = 1
答案 1 :(得分:2)
这是因为TINYINT(1)。更改它,例如TINYINT(3),您的数据将被正确保存。