Symfony - 我需要在数据库中插入或更新记录

发布于 2024-11-24 01:20:31 字数 679 浏览 0 评论 0原文

主键是 Id,但我想检查数据库中是否已存在具有相同缩写词的记录,如果不存在,则插入新记录,如果存在,我需要进行更新。我写了这段代码,但它不起作用。我收到来自 symfony 的消息“完整性违规:1062 密钥“PRIMARY”的重复条目“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();

任何人都可以帮助我吗? 谢谢。 Alexandre Sousa


我已经尝试过replace() 解决方案,但我遇到了一些问题,因为我想保留我的id 字段。所以我想做更新而不是替换。

我认为 save() 应该可以工作,因为我在某处读到这个函数足够智能,可以进行更新或插入。我仍然收到此消息:“完整性违规:1062 密钥“PRIMARY”的重复条目“180””

任何人都可以帮助我吗?

谢谢。

The primary key is Id, but i want to check if already exists a record in db with same acronym, and if not, insert a new one, if exists, I need to do an update. I wrote this code, but it doesn't work. I receive this message from symfony "Integrity violation: 1062 Duplicate entry '180' for key '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();

Anyone can help me?
Thanks.
Alexandre Sousa


I've tried the replace() solution, but I have some problems because I want to keep my id field. So I wanna do an update and not a replace.

I think save() should works, cause I read somewhere that this function is smart enough to do an update or insert. I still get this message: "Integrity violation: 1062 Duplicate entry '180' for key 'PRIMARY"

Anyone can help me?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狂之美人 2024-12-01 01:20:31

解决方案非常简单,只需使用 replace()

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

当然,当且仅当您将首字母缩略词指定为唯一时,这才有效。

The solution is dead simple, just use replace():

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

This will work if and only if you have specified acronym as unique, of course.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文