我试图从我的表中删除对应于特定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()成功,因此删除条目表而不必进行页面刷新.
"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()删除Result与id25,它不知道你要根据不同的绕圈删除,也不会在意.
你在寻找什么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)
| 归档时间: |
|
| 查看次数: |
9342 次 |
| 最近记录: |