Symfony - мне нужно вставить или обновить запись в базе данных - PullRequest
0 голосов
/ 12 июля 2011

Первичным ключом является Id, но я хочу проверить, существует ли уже запись в БД с той же аббревиатурой, и если нет, вставить новую, если существует, мне нужно сделать обновление.Я написал этот код, но он не работает.Я получаю это сообщение от Symfony «Нарушение целостности: 1062 Повторяющаяся запись« 180 »для ключа« ПЕРВИЧНЫЙ »»

$id = Doctrine_Core::getTable('college')->findBy('acronym', 'PMM')->getFirst()->getId();
$college = new college();
$college->setId($id);
$college->setAcronym('PMM');
$college->setName('Paulo Miguel Mar');
$college->setUrl('www.pmm.com');
$college->save();

Кто-нибудь может мне помочь?Благодарю.Александр Соуза


Я пробовал решение replace (), но у меня есть некоторые проблемы, потому что я хочу сохранить свое поле id.Поэтому я хочу сделать обновление, а не замену.

Я думаю, что save () должен работать, потому что я где-то читал, что эта функция достаточно умна, чтобы выполнить обновление или вставку.Я все еще получаю это сообщение: «Нарушение целостности: 1062 Повторяющаяся запись« 180 »для ключа« ПЕРВИЧНЫЙ »

Кто-нибудь может мне помочь?

Спасибо.

1 Ответ

2 голосов
/ 12 июля 2011

Решение очень простое, просто используйте replace():

$college = new college();
$college
  ->setAcronym('PMM')
  ->setName('Paulo Miguel Mar')
  ->setUrl('www.pmm.com')
  ->replace()

Это будет работать, если и только если вы, конечно, указали аббревиатуру как уникальную.

...