Laravel 5.6通过ID删除作为函数参数传递

时间:2018-08-10 06:35:11

标签: php

我当前在教程之后遇到问题,当我调用控制器方法通过URI传递$id并尝试执行以删除记录时,该记录将被执行:

public function delete($id)
{
    //dd($id);
    $sql = 'DELETE * FROM albums WHERE id=:id';
    DB::delete($sql, ['id' => $id]);
    return redirect()->back();
}

我收到此错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查与您的MySQL服务器版本相对应的手册以获取正确语法,以在'* FROM Albums WHERE id =?'附近使用在第1行(SQL:DELETE * FROM相册,其中id =:id)

传递的URI为/album/2/delete,其中2是我解析的ID。

3 个答案:

答案 0 :(得分:3)

由于您无法删除列,因此无需在您的DELETE查询中包括*。已经假设您要删除整行:

DELETE FROM albums WHERE id=:id

请参阅MySQL文档here中的DELETE语法。

答案 1 :(得分:0)

Remove * from query.Also in laravel use this code to delete.

DB::table('albums')
->where(['id' => $id])
->delete();

在使用框架时请勿编写直接查询

答案 2 :(得分:0)

以下是完整的代码:

public function delete($id)
{
    //dd($id);
    $sql = 'DELETE FROM albums WHERE id=:id';
    DB::delete($sql, ['id' => $id]);
    return redirect()->back();
}