Cakephp 3.x Ajax deleting data gives this Error: Unknown method "isNew"

Cakephp 3.x Ajax deleting data gives this Error: Unknown method "isNew"

我尝试在 CakePhp 3.0.6 中用 Ajax 删除一条记录。

这是我认为的 jquery (start.ctp)

<script>
$('.delavailable').click(function(){
    var dataString = 'ID=' + $(this).attr('id');
    $.ajax({
        type: 'POST',
        url: '/ID/admins/delavailable.json',
        data: dataString,
        beforeSend: function(xhr) {
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        }
    });
});

控制器(AdminsController.php)

    public function delavailable()
{

    $this->loadModel('TeamFree');

    if($this->request->is('ajax')) {
        $this->TeamFree->delavailable($this->request->data['ID']);
    }
}

Model/Table (TeamFreeTable.php)

    public function delavailable($id){

         $query = $this->find('all')
        ->select(['TeamFree.ID'])
        ->where(['TeamFree.ID ='=>$id]);

        $this->delete($query);
}

这个returns

{
"message": "Unknown method \u0022isNew\u0022",
"url": "\/ID\/admins\/delavailable.json",
"code": 500

}

我哪里失败了?

您正在将查询对象传递给 Table::delete(),但它不是这样工作的,该方法需要一个实体,您必须事先获取该实体。

简化示例

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

另见

多亏了 Cookbook 和一些反复试验,这就是我设法通过 Ajax 删除该行的方法。

    public function delavailable()
{

    $this->loadModel('TeamFree');

    $teamfree = $this->TeamFree->newEntity(); //create a temporary entity

    if($this->request->is('ajax')) {
        $teamfree = $this->TeamFree->patchEntity($teamfree,$this->request->data); // put the request data into the temp entity
        $this->TeamFree->delete($this->TeamFree->get($teamfree->ID)); //use get() to place the entity property into the delete function and let the delete function refer to the entity
    }
}