删除查询无法在cakephp

时间:2016-01-21 12:42:30

标签: mysql cakephp

以下是我在模型中使用的代码并在控制器中调用此函数。 我已经尝试了3种不同的方法来删除记录,但没有一种方法可以正常工作。 在调用此函数时,它显示删除但未删除记录。

function deleteRecord($id, $componentName, $action)
{
    try{
        echo 'deleting';
        $this->deleteAll($id); 
        //$this->delete(['id' => $id]);
        //$this->query("DELETE FROM `ebay_leave_feedback_queues` WHERE `id`= 983");
     }catch(Exception $e){
            $returnArray = array( // creating an array to log msg 
                'Ack' => 'Error',
                'ErrorCode' => '122456',
                'Message' => $e->getMessage(),
                'TraceOfException' => $e->queryString,
                'RowId' => 'Component: /Controller/Component/' . $componentName . ', Function: ' . $action . ', Table: =feedback_queues, Row Id: ' . $id
            );
            App::import('Model', 'SystemErrorLog'); 
            $SystemErrorLog = new SystemErrorLog();
            $SystemErrorLog->writeLog($returnArray, $componentName, $action);
     }
     return true;
}

如果我写错了,请告诉我 你会得到帮助。

2 个答案:

答案 0 :(得分:0)

你几乎就在那里,你交换了deleteAll()和delete()函数:

delete()接受一个I​​D(假设您的模型有一个主键集,标记为'id'或在模型中定义);它旨在删除单个记录。

deleteAll()接受带条件的数组;它的用途是根据这些条件删除多个记录。

所以它是:

delete($id);

deleteAll(['id' => $id]);

在这种情况下,后者有点矫枉过正。

然而,问题仍然存在:为什么要添加此功能,因为您可以直接从控制器调用delete()?

答案 1 :(得分:0)

由于您是从控制器调用此功能,因此需要使用以下内容:

$this->Model->delete($id);

确保将Model替换为您的型号名称。