Cakephp 检查重复行


cakephp checking for duplicate rows

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

我正在使用可以升级的cakephp 2.4.4,但我在任何更改中都没有看到我的问题.logPercona MYSQL 5.6 Innodb

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

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

然后我们有表A的模型

我在 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
        )
)

我也在调试模式 2 中运行

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

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