laravel - Laravel5.6“在null上调用成员函数delete()”,删除表中的一行
问题描述
我想从表中删除一行。我在控制器中使用的功能是:
public function destroy($id) {
$category = Category::find($id);
$category->delete();
return redirect()->back();
}
但是它给我一个错误:
在 null 上调用成员函数 delete()
当我使用此代码时:
public function destroy($id) {
$category = Category::find($id);
dd($id);
}
它显示了正确的 id 即
“1”
当我使用
public function destroy($id) {
$category = Category::find($id);
dd($category); // or
dd(Category::find($id);
}
我得到输出
无效的
屏幕上。
解决方案
如评论中所述,您收到的错误可能是由于数据库中不存在给定 ID 的类别。
然后,当您尝试查找该 ID 的类别时:
$category = Category::find($id);
$category
变量的值为null
。因此,您在尝试调用delete()
方法时会收到错误null
。在引擎盖下,它与执行以下操作相同:
null->delete();
哪个,不起作用。
您可以$category
在尝试删除它之前检查它的值。或者,在您的情况下,您可以使用查询来删除与给定条件匹配的所有记录id = $id
。这边走:
public function destroy($id)
{
Category::where('id', $id)->delete();
return redirect('/')->back();
}
有关其工作原理的详细信息,请参阅Eloquent 文档中的通过查询删除模型。
推荐阅读
- javascript - 在自动完成地图上搜索无法按预期工作
- javascript - Most effective User-Agent Switcher Extension for Chrome or Firefox
- java - 创建一种方法来检查Java中的通用HashMap中是否存在值?
- r - 在记事本中使用漂亮的布局将 R data.frames 转换为 XML
- python-3.x - Combining values in 2 rows of a list without duplicating in python
- arrays - Change the scoring function for array using best score for elements
- c# - 可以将对象从字符串值转换为类类型
- c++ - 线程的 C++11 向量参数出现未初始化
- javascript - f() 和 ()=>f() 的区别
- scala - 基于行值的条件连接过滤