CakePHP 1.3.0, mysqli
我有一个模型 Manifest,其 ID应该是打印表单中的唯一编号。但是,由于 Manifest.id 设置为主键,CakePHP 正在帮助我设置字段的自动增量。有没有办法通过 schema.php 和/或其他地方标记字段以禁用自动增量?没有它,我只需要一个普通的旧主键。
我能想象的唯一其他解决方案是添加一个单独的清单编号字段并在六个其他表中更改外键。有点浪费而且不那么直观。
CakePHP 1.3.0, mysqli
我有一个模型 Manifest,其 ID应该是打印表单中的唯一编号。但是,由于 Manifest.id 设置为主键,CakePHP 正在帮助我设置字段的自动增量。有没有办法通过 schema.php 和/或其他地方标记字段以禁用自动增量?没有它,我只需要一个普通的旧主键。
我能想象的唯一其他解决方案是添加一个单独的清单编号字段并在六个其他表中更改外键。有点浪费而且不那么直观。
You should be able to include the ID field in the add form. Just make sure to override its default type or CakePHP will turn it into a hidden field.
echo $this->Form->input('id', array('type' => 'text'));
我刚刚在我的蛋糕沙盒上进行了测试,它确实有效。
您需要做的就是在要保存的数据中设置 id 字段。因此,如果您要保存帖子数据,并且希望 id 为 200(任意;您可以使用另一个表字段或用户输入或其他任何内容作为此源)。
$this->data['Manifest']['id'] = 200;
这就是您所追求的,能够为 id 设置自己的值而不是自动递增它们吗?
我对此有点好奇。当然,如果没有设置主键(在您的情况下为 ID),您将无法保存记录。因此,如果您不希望 ID 自动递增,那么您必须保存自己的 ID。它不应该引起问题。
你用的是mysql数据库吗?如果是这样,您是否在 ID 字段上将 auto_increment 设置为 true?然后mysql本身会在你保存记录时自动增加ID,不是吗?
您可以在 Manifest 模型中设置您的架构:http: //book.cakephp.org/view/442/_schema。