我正在尝试删除表中与特定 ID 相对应的条目列表。我获取 id 并通过 ajax 函数将其发布到 Controller ,并使用模型的删除函数删除特定条目。但条目并没有被删除。
这是我在名为 reports.ctp 的 View 文件中的 ajax 函数,当单击链接时,我在其中调用 Controller 函数。
$(".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
});
这是reports_controller.php中的删除操作
function deleteEntries()
{
$this->data['Result']['form_id']=$this->params['form']['formid'];
$this->Report->Result->delete($this->data['Result']['form_id']);
}
我要从中删除条目的表是“结果”。有人帮助我如何删除条目。
编辑
现在我使用删除 sql 查询来删除结果表中的条目。
$this->Result->query("delete from results where form_id=".$this->data['Result']['form_id']);
不知道为什么CakePHP的删除命令不起作用。
但现在的问题是,只有当我刷新页面时,条目的删除才会反射(reflect)出来。如果我不刷新,条目仍显示在表中。 也许如果CakePHP的删除功能有效,页面就会刷新。
解决方案
deleteAll 方法有效,因为我没有像 deceze 指出的那样将主 id 作为删除方法的输入。
$this->Result->deleteAll(array('Result.form_id' => $this->data['Result']['form_id']));
关于反射(reflect)条目删除的问题,我按照Xr的建议成功执行了 $(".entries).remove() ,因此条目表被删除而无需进行页面刷新。
最佳答案
"delete from results where form_id=".$this->data['Result']['form_id']
问题是您想要删除主 id
以外的字段。 Model::delete()
方法希望您为其提供主 id
字段。
当你尝试做的事情
$this->Report->Result->delete($this->data['Result']['form_id']);
即使您先将 form_id
放入一个漂亮的数组中,结果也只是这样:
$this->Report->Result->delete(25); // let's say 'form_id' is 25
这告诉 delete()
删除带有 id
的 Result
25、它不知道你要根据不同的标准进行删除,也不关心。
您正在寻找的是 Model::deleteAll()
.
deleteAll(mixed $conditions, $cascade = true, $callbacks = false)
Same as with del() and remove(), except that deleteAll() deletes all records that match the supplied conditions. The $conditions array should be supplied as an SQL fragment or array.
你应该能够用它做这样的事情:
$this->Result->deleteAll(array('Result.form_id' => $this->data['Result']['form_id']));
关于jquery - 删除主 ID 以外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304232/