1

我是 CakePHP 的新手,仍然没有完全理解。如果我有一个只有一个主键字段的 mysql 数据库,我如何使用 cake bake 选项为其创建一个输入字段。烘烤后,我尝试将此行添加到生成的视图文件中

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

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

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

4

2 回答 2

3

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

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

然而,CakePHP 支持两种类型的主键;autoNumber 整数和 GUID/UUID 主键。手动设置主键(例如,使用“用户名”作为主键并尝试插入编辑用户名)可能会导致问题,因为 CakePHP 假设如果表单中的主键不为空,则应该执行更新。

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

于 2013-03-16T10:51:30.573 回答
1

将您的声明更改为:

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

您现在应该可以看到完整的 id。

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

如果您使索引可编辑,您将不得不处理此问题,否则您最终可能会拥有多条记录,一条是原始记录,另一条记录是更改。

于 2013-03-16T14:06:03.227 回答