CakePHP: Как я могу отключить автоинкремент на Model.id? - PullRequest
4 голосов
/ 27 мая 2010

CakePHP 1.3.0, mysqli

У меня есть модель, манифест, чей ID должен быть уникальным номером из печатной формы. Тем не менее, с Manifest.id, установленным в качестве первичного ключа, CakePHP помогает мне, устанавливая автоинкремент на поле. Есть ли способ пометить поле через schema.php и / или в другом месте, чтобы отключить автоинкремент? Мне нужен только простой старый первичный ключ без него.

Единственное другое решение, которое я могу себе представить, - это добавить отдельное поле номера манифеста и изменить внешние ключи в полдюжине других таблиц. Немного расточительно и не так интуитивно понятно.

Ответы [ 4 ]

2 голосов
/ 27 мая 2010

Мне немного любопытно по этому поводу. Конечно, вы не можете сохранить запись без установленного первичного ключа (в вашем случае это ID). Поэтому, если вы не хотите, чтобы идентификатор увеличивался автоматически, вы должны сохранить свой собственный идентификатор. И это не должно вызывать проблем.

Вы используете базу данных mysql? Если да, то есть ли у auto_increment значение true в поле идентификатора? Тогда MySQL автоматически увеличит ID всякий раз, когда вы сохраняете запись, не так ли?

2 голосов
/ 27 мая 2010

Я только что проверил это на своей песочнице для торта, и это сработало.

Все, что вам нужно сделать, это установить поле id в сохраняемых вами данных. Таким образом, если вы сохраняете данные поста и хотите, чтобы идентификатор был 200 (произвольно; вы можете использовать другое поле таблицы или пользовательский ввод или что-нибудь еще для этого источника).

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

Это то, что вам нужно, имея возможность устанавливать свои собственные значения для идентификаторов, а не автоматически увеличивать их?

2 голосов
/ 27 мая 2010

Вы должны иметь возможность включить поле ID в форму добавления. Просто убедитесь, что он переопределил тип по умолчанию, иначе CakePHP превратит его в скрытое поле.

echo $this->Form->input('id', array('type' => 'text'));
0 голосов
/ 27 мая 2010

Вы можете установить свою схему в модели манифеста: http://book.cakephp.org/view/442/_schema.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...