Propel ORM:如果这样的对象不存在,如何仅保存对象

Posted

技术标签:

【中文标题】Propel ORM:如果这样的对象不存在,如何仅保存对象【英文标题】:Propel ORM: How to save Object only, if such an object doesnt already exist 【发布时间】:2010-12-17 21:04:10 【问题描述】:

我正在使用 Propel ORM。我的一张表称为“朋友”,它的条目代表多对多关系。表“朋友”必须条目:

profile_id friend_profile_id

这两个属性显然创建了 PrimaryKey。

现在我想用新信息更新这个表。所以我想像这样保存新的朋友条目:

$friendCon = new RplFriend();
$friendCon->setProfileId($profile->getId());
$friendCon->setFriendProfileId($friendProfile->getId());
$friendCon->save();

但是在这一点上,我不知道这样的条目是否已经存在。所以我从 Propel 收到很多“重复输入”错误。什么是最高效的方式,只保存一个新条目,如果它不存在?

【问题讨论】:

【参考方案1】:

也许您应该尝试以下方法:

$friendCon_duplicate = RplFriendQuery::create()->findPK($profile->getId(),$friendProfile->getId());

if($friendCon_duplicate..

【讨论】:

【参考方案2】:

设置数据库中这两个字段的唯一索引

【讨论】:

以上是关于Propel ORM:如果这样的对象不存在,如何仅保存对象的主要内容,如果未能解决你的问题,请参考以下文章

Propel ORM - 连接不相关的表

真正复杂查询的 ORM 解决方案

如何将 Propel orm 视为查询类?

Propel - propel:build-sql - 能够添加 CREATE DATABASE .. 如果不存在

如何使用 Propel ORM 在数据库中查找重复条目?

如何将 Propel ORM 与 Informix 数据库连接