php - cakephp 检查重复行

标签 php mysql cakephp caching

我已经在这里工作了 5 天了。我在这里阅读了我能找到的所有答案,我尝试了所有可能的选项,但我找不到如何解决此缓存问题。

我正在使用可以升级的 cakephp 2.4.4,但我没有在任何 change.log 中看到我的问题 Percona MYSQL 5.6 Innodb

我们有一个模型,我们在循环中调用它来插入行

App::import('Model', 'TableA');
$TableA = new TableA();
foreach($rows as $row){
    $TableA->InsertRow($row);
}

然后我们有了 TableA 的模型

我在 TableA.Sku 上添加了一个唯一索引以避免重复输入

class TableA extends AppModel {
    var $name = 'TableA';
    var $cacheQueries = false;
    var $validate = array();
    function InsertRow($data){
        $this->clear();
        try {
            $result = $this->find('first', array(
                'fields' => array(
                     'TableA.id',
                 ),
                 'conditions' => array(
                     'TableA.Sku' => $data['Sku'],
                 ),
            ));
            pr($result);
            if(!isset($result['TableA']['id'])){
                $data['TimeStamp'] = strtotime("now");
                $this->save($data);
            }
            return TRUE;
        }
        catch (Exception $e) {
            pr($e);
            $resultNow = $this->find('first', array(
                'fields' => array(
                     'TableA.id',
                 ),
                 'conditions' => array(
                     'TableA.Sku' => $data['Sku'],
                 ),
            ));
            pr($resultNow);
        }
   }
}

第一个循环 $Rows 有多次相同的 sku 相互跟随 第一个循环插入行 第二个循环给出:

array
(
)

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'tue026991015' for key 'Sku'
INSERT INTO `ki`.`TableA` (`Sku`, `TimeStamp`) VALUES ('tue026991015', 1453858976)

Array
(
    [TableA] => Array
        (
            [id] => 31951
        )
)

我也在 Debug模式 2 下运行

在第二个循环中,查询应该返回 id 并且循环不应该尝试插入该行,但事实并非如此。 我添加了 var $cacheQueries = false;在模型之上以避免兑现。我不知道为什么会发生这种行为以及如何避免任何 mysql 兑现此功能。

最佳答案

它发生在用户单击“刷新”数据时,还是发生在您填写表单并添加用户数据时?您使用哪种方法收集 GET 或 POST 数据?

关于php - cakephp 检查重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028860/

相关文章:

php - 如何获取当前日期与数据库中的日期之间的差异并将其显示在表中

php - 单页 : multiple query_posts

php - 使用phpmyadmin将Unicode十六进制代码点数据导入mysql

Mysql 排序规则不起作用

php - 在 CakePHP 中一次存储多行

php - 如何通过 pageid 获取维基百科中特定页面的所有链接(id)

php - 选择未选择的记录 mysql php

php - CakePHP Cache::write() 键可以按模型分组吗?

php - 如何获取并仅显示发票上的日期而不是时间

php - Laravel updateOrCreate 一般报错字段post_id不存在