在CakePHP中向主键添加输入字段

时间:2013-03-16 03:51:24

标签: php cakephp primary-key

我是CakePHP的新手,但仍然没有透彻理解。如果我有一个只有主键字段的mysql数据库,我怎样才能使用cake bake选项为它创建一个输入字段。 烘焙后,我尝试将此行添加到生成的视图文件中

<fieldset>
<legend><?php echo __('Add Id'); ?></legend>
<?php
        **echo $this->Form->input('identity');**
?>
</fieldset>

它不起作用...... 获取主键的输入字段的正确方法是什么?

表id在数据库中只有一个名为identity的字段

2 个答案:

答案 0 :(得分:2)

默认情况下,CakePHP将主键字段输出为隐藏输入。您可以通过指定要使用的输入的“类型”来覆盖它,例如:

echo $this->Form->input('identity', array('type' => 'text'));

但是,CakePHP支持两种类型的主键; autoNumber整数和GUID / UUID主键。手动设置主键(例如,使用'username'作为主键并尝试插入编辑用户名)可能会导致问题,因为CakePHP假定更新<如果表单中的主要内容不为空,则应执行/ em>。

http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#model-and-database-conventions

答案 1 :(得分:1)

将您的陈述改为:

echo $this->Form->input('id', array ('type'=>'text'));   

您现在应该拥有完整视图中的ID。

CakePHP使用id或索引来确定表单条目是新条目(即INSERT)还是对现有extry的更新(即UPDATE)。

如果您使索引可编辑,则必须处理此问题,否则您最终可能会有多条记录,一条记录包含原始记录,另一条记录包含更改记录。