删除主ID以外的字段

Ang*_*ine 2 jquery cakephp

我试图从我的表中删除对应于特定id的条目列表.我得到id并通过ajax函数将其发布到控制器并使用模型的Delete函数删除特定条目.但条目不会被删除.

这是我在视图文件中的ajax函数,名为reports.ctp,我在单击链接时调用控制器函数.

$(".delete_entries").click(function() {
    $.ajax({
        type: "POST",
        url: "http://localhost/FormBuilder/reports/deleteEntries",
        data: "formid="+formid,
        async: false,
        success: function(msg){
            alert( "Data Saved: " + msg);
        }  
    });//ajax
});
Run Code Online (Sandbox Code Playgroud)

这是reports_controller.php中的删除操作

function deleteEntries()
{
    $this->data['Result']['form_id']=$this->params['form']['formid'];
    $this->Report->Result->delete($this->data['Result']['form_id']);
}
Run Code Online (Sandbox Code Playgroud)

我要删除条目的表是"结果".一些人帮助我如何删除条目.

编辑

现在我正在使用delete sql查询来删除Results表中的条目.

$this->Result->query("delete from results where form_id=".$this->data['Result']['form_id']);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么CakePHP的删除命令不起作用.

但现在的问题是,只有当我刷新页面时,才会反映出条目的删除.如果我不刷新,条目仍会显示在表格中.也许如果CakePHP的删除功能工作,页面将刷新.

deleteAll方法有效,因为我没有像deceze指出的那样将主要id作为delete方法的输入.

$ this-> Result-> deleteAll(array('Result.form_id'=> $ this-> data ['Result'] ['form_id']));

关于反映删除条目的问题,我在Xr建议的时候做了$(".entries).remove()成功,因此删除条目表而不必进行页面刷新.

dec*_*eze 5

"delete from results where form_id=".$this->data['Result']['form_id']
Run Code Online (Sandbox Code Playgroud)

问题是您要删除主要字段以外的字段id.该Model::delete()方法希望您为其提供主要id字段.

当你想要做的时候

$this->Report->Result->delete($this->data['Result']['form_id']);
Run Code Online (Sandbox Code Playgroud)

即使你先把它form_id放入一个漂亮的数组,结果就是这样:

$this->Report->Result->delete(25);  // let's say 'form_id' is 25
Run Code Online (Sandbox Code Playgroud)

这告诉delete()删除Resultid25,它不知道你要根据不同的绕圈删除,也不会在意.

你在寻找什么Model::deleteAll().

deleteAll(mixed $conditions, $cascade = true, $callbacks = false)

与del()和remove()相同,只是deleteAll()删除与提供的条件匹配的所有记录.$ conditions数组应作为SQL片段或数组提供.

你应该可以用它做这样的事情:

$this->Result->deleteAll(array('Result.form_id' => $this->data['Result']['form_id']));
Run Code Online (Sandbox Code Playgroud)