代码之家  ›  专栏  ›  技术社区  ›  SeanDowney

Cakephp插入忽略功能?

  •  4
  • SeanDowney  · 技术社区  · 16 年前

    有没有一种方法可以不使用模型就在cake中执行“insert ignore”—>查询功能?

                $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]
    

    如果能设置一些标志或选项,上面写着“不在乎”,那就太好了

    2 回复  |  直到 16 年前
        1
  •  7
  •   Lemmings19 Henry Moshkovich    10 年前

    这不是一个真正的问题 INSERT IGNORE isUnique 验证规则( 2.x 3.x )到 guid 字段,如果guid已经存在,Cake将自动退出保存操作。

    在幕后,它将对数据库进行两个查询,而不是 插入忽略

    false $this->Model->invalidFields() Model::save() 在模型中执行此操作,这样就不必每次都在控制器中执行此操作。

    您也可以使用 $this->Model->isUnique(array('guid' => $guid)) ( 2.x ) ( save 方法并让它静默返回 true

        2
  •  -1
  •   Young    16 年前

    我认为CakePHP中没有这么简单的标志或选项,因为这个警告最初是由MySql生成的,而不是cake本身 guid 你必须做一些索引改变查询

    $this->Model->query("ALTER TABLE `yourdatebasename`.`yourtablename` DROP INDEX `guid` ,ADD INDEX `guid` ( `guid` )");