Laravel5.6 "Call to a member function delete() on null " , 删除 table 中的一行
Laravel5.6 "Call to a member function delete() on null " , delete a row in table
我想从 table 中删除一行。我在控制器中使用的功能是:
public function destroy($id) {
$category = Category::find($id);
$category->delete();
return redirect()->back();
}
然而它抛出一个错误:
Call to a member function delete() on null
当我使用这段代码时:
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);
}
我得到输出
null
在屏幕上。
如评论中所述,您收到的错误可能是由于给定 ID 的数据库中不存在类别。
然后,当您尝试查找该 ID 的类别时:
$category = Category::find($id);
$category
变量的值为null
。因此,您会在尝试调用 null
上的 delete()
方法时出错。在引擎盖下,它与执行以下操作相同:
null->delete();
哪个不行。
您可以在尝试删除之前检查 $category
的值。或者您可以使用查询来删除与给定条件匹配的所有记录,在您的情况下 id = $id
。这样:
public function destroy($id)
{
Category::where('id', $id)->delete();
return redirect('/')->back();
}
请参阅 Eloquent docs 中的 通过查询删除模型 了解其工作原理的详细信息。
对我有用的是以下内容(我确保 $id 从视图中传递):
public function destroy($id)
{
$vendor = Vendor::findorFail($id);
$vendor->delete():
}
出于某种原因,当我执行以下操作时,它显示 null
public function destroy($id)
{
$vendor = Vendor::find($id);
$vendor->delete():
}
这是视图部分:
{!! Form::open(array(
'style' => 'display: inline-block;',
'method' => 'DELETE',
'onsubmit' => "return confirm('".trans("global.app_are_you_sure")."');",
'route' => ['vendor.destroy', $vendor->vendor_id])) !!}
{!! Form::submit(trans('global.app_delete'), array('class' => 'btn btn-xs btn-danger')) !!}
{!! Form::close() !!}
我想从 table 中删除一行。我在控制器中使用的功能是:
public function destroy($id) {
$category = Category::find($id);
$category->delete();
return redirect()->back();
}
然而它抛出一个错误:
Call to a member function delete() on null
当我使用这段代码时:
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);
}
我得到输出
null
在屏幕上。
如评论中所述,您收到的错误可能是由于给定 ID 的数据库中不存在类别。
然后,当您尝试查找该 ID 的类别时:
$category = Category::find($id);
$category
变量的值为null
。因此,您会在尝试调用 null
上的 delete()
方法时出错。在引擎盖下,它与执行以下操作相同:
null->delete();
哪个不行。
您可以在尝试删除之前检查 $category
的值。或者您可以使用查询来删除与给定条件匹配的所有记录,在您的情况下 id = $id
。这样:
public function destroy($id)
{
Category::where('id', $id)->delete();
return redirect('/')->back();
}
请参阅 Eloquent docs 中的 通过查询删除模型 了解其工作原理的详细信息。
对我有用的是以下内容(我确保 $id 从视图中传递):
public function destroy($id)
{
$vendor = Vendor::findorFail($id);
$vendor->delete():
}
出于某种原因,当我执行以下操作时,它显示 null
public function destroy($id)
{
$vendor = Vendor::find($id);
$vendor->delete():
}
这是视图部分:
{!! Form::open(array(
'style' => 'display: inline-block;',
'method' => 'DELETE',
'onsubmit' => "return confirm('".trans("global.app_are_you_sure")."');",
'route' => ['vendor.destroy', $vendor->vendor_id])) !!}
{!! Form::submit(trans('global.app_delete'), array('class' => 'btn btn-xs btn-danger')) !!}
{!! Form::close() !!}