Laravel destroy不会从数据库中删除数据

时间:2017-06-08 13:44:12

标签: laravel-5.4 laravel-eloquent

尝试使用Laravel 5.4中的以下内容从数据库中删除条目,但没有成功。

我的观点

{!! Form::open(['method' => 'DELETE', 'route' => ['faculty.delete', $faculty->id]]) !!}
    <button type="submit" class="btn btn-danger btn-sm">Delete</button>
{!! Form::close() !!}

我的路线

Route::delete('faculty/delete/{id}', 'FacultyController@destroy')->name('faculty.delete');//delete faculty

我的控制器

public function destroy(Faculty $faculty)
{
    //Log::info($faculty);
    $faculty->delete();
    return redirect('faculties/faculty');
}

当我允许它运行时,控制器中的log返回一个空值。

问题是代码不会从表中删除该项目。

1 个答案:

答案 0 :(得分:1)

您需要将faculty/delete/{id}更改为faculty/delete/{faculty}

Laravel自动解析路径或控制器操作中定义的Eloquent模型,其类型提示的变量名称与路径段名称匹配。

由于$faculty变量是类型提示为App\Faculty Eloquent模型且变量名称与{faculty} URI段匹配,因此Laravel将自动注入具有ID匹配的模型实例来自请求URI的相应值。如果在数据库中找不到匹配的模型实例,则会自动生成404 HTTP响应。

https://laravel.com/docs/5.4/routing#route-model-binding