CakePHP:如何在Model.id上禁用自动增量?

时间:2010-05-26 21:39:19

标签: php cakephp model auto-increment cakephp-1.3

CakePHP 1.3.0,mysqli

我有一个模型,Manifest,其ID 是打印表单中的唯一编号。但是,将Manifest.id设置为主键,CakePHP通过在场上设置自动增量来帮助我。有没有办法通过schema.php和/或其他地方标记字段以禁用自动增量?我只需要一个没有它的普通旧主键。

我能想象的唯一其他解决方案是添加一个单独的清单号字段并在六个其他表中更改外键。有点浪费,而不是那么直观。

4 个答案:

答案 0 :(得分:2)

您应该能够在添加表单中包含ID字段。只需确保覆盖其默认类型,否则CakePHP会将其转换为隐藏字段。

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

答案 1 :(得分:2)

我刚刚在我的蛋糕沙盒上测试了它,它确实有效。

您需要做的就是在您要保存的数据中设置id字段。因此,如果您要保存帖子数据,并且您希望id为200(任意;您可以使用另一个表字段或用户输入或此源的任何其他内容)。

$this->data['Manifest']['id'] = 200;

这就是你所追求的,能够为id设置你自己的值而不是自动递增它们吗?

答案 2 :(得分:2)

我对此有点好奇。当然,如果没有设置主键(在您的情况下为ID),则无法保存记录。因此,如果您不希望ID自动递增,那么您必须保存自己的ID。它不应该导致问题。

您使用的是mysql数据库吗?如果是这样,您是否在ID字段上将auto_increment设置为true?那么每当你保存一条记录时,mysql本身会自动增加ID吗?

答案 3 :(得分:-1)

您可以在Manifest模型中设置架构:http://book.cakephp.org/view/442/_schema