Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ORM(红豆)和重复键_Php_Mysql_Orm_Constraints_Mysql Error 1062 - Fatal编程技术网

Php ORM(红豆)和重复键

Php ORM(红豆)和重复键,php,mysql,orm,constraints,mysql-error-1062,Php,Mysql,Orm,Constraints,Mysql Error 1062,我目前正在我的模型中使用用于ORM的RedBean 我需要将数据插入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) 现

我目前正在我的模型中使用用于ORM的RedBean

我需要将数据插入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'
另一个问题是,如果我有多个字段被设置为唯一,那么异常只会告诉我复制的第一个字段。因此,为了获得下一个字段,我需要确保用户更正第一个重复项并再次运行查询

这似乎效率很低。我需要能够检查用户是否在不执行太多SQL语句的情况下在多个字段中插入了重复数据

做这件事的最佳实践是什么?另外,在返回操作是否成功时,最佳做法是什么?如果操作失败,返回控制器的原因和字段是什么

谢谢:)

您必须先执行“选择”以检查唯一条目是否已存在,没有其他方法。。。如果不希望执行来自代码的多个请求,可以实现存储过程

它允许您在同一事务中执行多个请求,这限制了网络开销

它还允许您管理多种类型的错误(通过AFAIR错误代码),这将为您提供一种明确识别问题字段的方法

退房

希望有帮助

您必须首先执行“选择”以检查唯一条目是否已经存在,没有其他方法。。。如果不希望执行来自代码的多个请求,可以实现存储过程

它允许您在同一事务中执行多个请求,这限制了网络开销

它还允许您管理多种类型的错误(通过AFAIR错误代码),这将为您提供一种明确识别问题字段的方法

退房

希望有帮助