主键是Id,但是我想检查db中是否已经存在具有相同首字母缩写词的记录,如果没有,则插入一个新记录,如果存在,我需要进行更新。我写了这段代码,但它不起作用。我从symfony收到此消息“完整性违规:1062重复条目'180'用于关键'PRIMARY'”
$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'用于键'PRIMARY'
任何人都可以帮助我?
感谢。
答案 0 :(得分:2)
解决方案很简单,只需使用replace()
:
$college = new college();
$college
->setAcronym('PMM')
->setName('Paulo Miguel Mar')
->setUrl('www.pmm.com')
->replace()
当且仅当您将指定的首字母缩略词指定为唯一时,这将起作用。