【问题标题】:ORM (RedBean) and duplicate keysORM (RedBean) 和重复键
【发布时间】:2023-03-06 05:39:02
【问题描述】:

我目前在我的模型中使用 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 语句。

有哪些最佳做法?此外,在返回操作是否成功或失败时,最佳实践是什么?为什么以及哪些字段返回给控制器?

谢谢你:)

【问题讨论】:

    标签: php mysql orm constraints mysql-error-1062


    【解决方案1】:

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

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

    它还允许您管理多种错误(通过错误代码 AFAIR),这将使您能够清楚地识别有问题的字段。

    查看this link

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 2011-12-07
      • 2011-06-07
      • 2014-04-11
      • 2013-02-26
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多