@Monitorkin

(YII2) Как заставить работать автоинкремент при добавлении записи в таблицу Mysql?

Имеется:
таблица Test (id(AUTO_INCREMENT), text)
Делаю:
$test = new Test();
$test -> text = 'test1';
$test -> save();

предполагаю, что в поле id запишется автоинкрементное значение, но нет...запись не сохраняется вообще.
Если делать так, то всё работает:
$test -> id = 1;
$test -> text = 'test1';
$test -> save();

Как сделать так чтобы не указывать явно значение поля id?
  • Вопрос задан
  • 1864 просмотра
Решения вопроса 1
@Monitorkin Автор вопроса
оказалось что поле ID вписано в rules модели (создавалась через gii),
[['id', 'text'], 'required'], оставил так: [['text'], 'required'], заработало, всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
supervaleha
@supervaleha
Web-development
а в самой БД стоит primary autoincrement? Если запись не сохраняется - посмотрите (покажите) $model->getErrors() - сможем понять причину несохранения.
Ответ написан
333Serega333
@333Serega333
333Serega333
При создании таблицы нужное поле пометьте как AUTO_INCREMENT
CREATE TABLE animals (id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL, PRIMARY KEY (id));
INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"),
("lax"),("whale");
Ответ написан
Комментировать
kawabanga
@kawabanga
Используйте миграции, добавлять их и работать с ними очень просто. При этом у вас не возникнет таких проблем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы