Laravel 5.1 从数据库中删除一行
Laravel 5.1 Delete a row from database
我正在尝试通过单击按钮来删除类别
Blade:
<td class="center"><a href="{{URL::to('/deletecat/'.$category->name) }}"><span class="glyphicon glyphicon-trash"></span></a></td>
路线:
Route::get('/deletecat/{name}','CategoryController@delete');
控制器:
public function delete($name)
{
category::find($name)->delete();
return Redirect::route('managecategory');
}
但是我在点击
按钮时出现错误
Call to a member function delete() on a non-object
感谢任何帮助。
::find($id)
方法要求 $id
是一个数字,即您要查找的行的主键。
如果要按名称删除行,应使用以下代码:
category::where('name', $name)->delete();
在您看来:
它必须是提交 POST 请求的表单,如下所示:
<form action="/deletecat/{{$data->id}}" method="post">
@csrf
@method('DELETE')
<input type="submit" value="delete " >
</form>
因为这是 POST 请求必须使用 csrf 和删除操作。
在你的路线中,它有 delete() 方法,然后是控制器。
Route::delete('/deletecat/{name}', 'CategoryController@destory');
在控制器中:
public function destory($name)
{
category::find($name)->delete();
return Redirect::route('managecategory');
}
这就是laravel名字格式的作用:
错误显然是因为返回的 NON-OBJECT。
::find($name) returns an empty object or null
这是因为搜索为空。
确保名称是主键以便使用查找。
否则:
use ::where('name', $name)->delete();
或:
::where('name','=', $name)->delete();
*我指出 =
因为如果您需要搜索不同于 =
的内容,请使用 >=
<>
等等...
其次,使用destroy
也不是很重要。推荐但非必备!
我正在尝试通过单击按钮来删除类别
Blade:
<td class="center"><a href="{{URL::to('/deletecat/'.$category->name) }}"><span class="glyphicon glyphicon-trash"></span></a></td>
路线:
Route::get('/deletecat/{name}','CategoryController@delete');
控制器:
public function delete($name)
{
category::find($name)->delete();
return Redirect::route('managecategory');
}
但是我在点击
按钮时出现错误Call to a member function delete() on a non-object
感谢任何帮助。
::find($id)
方法要求 $id
是一个数字,即您要查找的行的主键。
如果要按名称删除行,应使用以下代码:
category::where('name', $name)->delete();
在您看来: 它必须是提交 POST 请求的表单,如下所示:
<form action="/deletecat/{{$data->id}}" method="post">
@csrf
@method('DELETE')
<input type="submit" value="delete " >
</form>
因为这是 POST 请求必须使用 csrf 和删除操作。
在你的路线中,它有 delete() 方法,然后是控制器。
Route::delete('/deletecat/{name}', 'CategoryController@destory');
在控制器中:
public function destory($name)
{
category::find($name)->delete();
return Redirect::route('managecategory');
}
这就是laravel名字格式的作用:
错误显然是因为返回的 NON-OBJECT。
::find($name) returns an empty object or null
这是因为搜索为空。
确保名称是主键以便使用查找。
否则:
use ::where('name', $name)->delete();
或:
::where('name','=', $name)->delete();
*我指出 =
因为如果您需要搜索不同于 =
的内容,请使用 >=
<>
等等...
其次,使用destroy
也不是很重要。推荐但非必备!