我目前在我的模型中使用 RedBean for ORM。
我需要将数据插入到其中一列设置为唯一的 MySQL 表中。
目前,数据是通过如下形式插入的:
//Create
$object = R::dispense('object');
//Need to check if supplied name is a duplicate
$object->name = $name
$object->description = $description
//Save
R::store($object)
现在的问题是,如果 $name 在数据库中没有重复,那么一切都很顺利。如果是重复的,我可以捕获异常并得到SQL错误代码:23000
如果我回显异常,我会得到:
[23000] - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'abc' for key 'name_UNIQUE'
另一个问题是,如果我有多个设置为 UNIQUE 的字段,则异常只会告诉我重复的第一个字段。因此,为了获得下一个字段,我需要确保用户更正第一个重复项并再次运行查询。
这似乎效率很低。我需要能够检查用户是否在多个字段中插入了重复数据而不执行太多 SQL 语句。
这样做有哪些最佳实践?此外,在返回操作是否成功时,最佳实践是什么,或者如果失败,为什么以及哪些字段返回给控制器?
谢谢 :)