通过 AR 如何实现 INSERT IGNORE ?

如果定义了数据表 unique key,使用 INSERT IGNORE 语句,会忽略违反约束的 INSERT 行为。

如果违反了约束,用 save() 方法会报错。

该怎么做呢?

会忽略重复的数据而已,这样应该不是你说的“会忽略违反约束的行为吧”。约束是unique,而 你的IGNORE保证了约束成立,而不是忽略了约束,这样你的save()应该是成功的。我是这样理解的,不知我有没有听明白的你的意思?

喔,对了(上诉理解也许还真有偏差),也许你可以直接使用db,而不是AR了.使用AR,可能得先过滤数据。又不想过滤数据,直接save(),貌似还不行吧(至少我还没有看见有这方面的属性控制)。干脆直接写sql语句了。

呵呵,看来没有别的办法了,SQL 了。谢谢你的回答。

如果是来自用户填写的数据,CUniqueValidator可能会有用哟。

那你看一下噢,关联唯一约束这样写 rules 对不对呢?

array(‘objectId, subjectId’, ‘unique’)