Cakephp 插入忽略功能?

标签 cakephp model insert

有没有办法在不使用模型->查询函数的情况下在蛋糕中进行“插入忽略”?

            $this->Model->save(array(
                'id' => NULL,
                'guid' => $guid,
                'name' => $name,
            ));

产生错误:
Warning (512): SQL Error: 1062: Duplicate entry 'GUID.....' for key 'unique_guid' [CORE/cake/libs/model/datasources/dbo_source.php, line 524]

能够设置一些表示“不关心”的标志或选项会很棒

最佳答案

这不是真正的 INSERT IGNORE解决方案,但要在应用程序级别处理这种情况,您将使用验证规则。如果您只是附上 isUnique验证规则 ( 2.x ) ( 3.x ) 到 guid如果 guid 已经存在,Cake 将自动退出保存操作。

在幕后,它将对数据库进行两次查询,而不是 INSERT IGNORE会产生,但这应该不是什么大问题。

一个问题可能是它会返回 false对于这些失败的操作,您必须使用 $this->Model->invalidFields()找出问题所在,以及是否可以忽略它。您可以覆盖 Model::save()在模型中执行此操作,因此您不必每次都在 Controller 中执行此操作。

您可能还想使用 $this->Model->isUnique(array('guid' => $guid)) ( 2.x ) ( 3.x ) 在保存之前手动检查。同样,您可以覆盖 save方法并让它默默返回 true如果 guid 不是唯一的,但要小心这种事情。

关于Cakephp 插入忽略功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830808/

相关文章:

php - 首先 postLink() 不创建表单

CakePHP 2.1 - 如何在 find() 中正确使用 DISTINCT

php - 如何在shell中转储sql

python - 为什么 Django get_or_create 会导致这个 IntegrityError?

sqlite - sqlite触发器中的条件插入语句

php - cakephp 查找关联字段的顺序排序

php - PHP中如何处理不同的账户类型?

java - 在 OO 模型中添加双向关系的最佳实践

mysql - 如何在MySQL中进行批量插入

c++ - 替换排序范围内的元素