最近我开始学习Laravel 5.2,并尝试创建一个删除按钮,用于从数据库中删除行。看起来很基础和琐碎,但似乎我做不到。
我正在按照删除文档进行操作:https://laravel.com/docs/5.2/queries#deletes
我已经建立了我的路由:
Route::post('flags/destroy/{delete}', 'FlagsController@destroy')->name('admin.flags.destroy');
视图中的按钮
{!! Html::linkRoute('admin.flags.destroy', 'Delete', $flag->report_id) !!}
以及控制器
public function destroy(Request $request){
$report = $request['report_id'];
Report::find($report);
$report->delete();
$request->session()->flash('alert-success', ' Report is deleted successfully.');
return redirect()->route('admin.flags');
}
我尝试了其他帖子中的解决方案,但总是出现错误:
在compiled.php的第8936行中出现MethodNotAllowedHttpException异常:
新错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'reports.id' in 'where clause' (SQL: select * from `reports` where `reports`.`id` is null limit 1
为什么要搜索
id
而不是 report_id
?更新:
按钮
{!! Html::linkRoute('admin.flags.destroy', 'Delete', $flag->report_id) !!}
控制器
public function destroy(Request $request){
$report = $request['report_id'];
dd( $request->input('delete'));
Report::where('report_id', $report)->first();
$report->delete();
$request->session()->flash('alert-success', ' Report is deleted successfully.');
return redirect()->route('admin.flags');
}
路由
Route::get('flags/destroy/{delete}', 'FlagsController@destroy')->name('admin.flags.destroy');
更新2:这似乎可行,但安全性如何? 查看:
{!! Form::open(array('route' => array('admin.flags.destroy', $flag->report_id), 'method' => 'get')) !!}
<button type="submit">Delete</button>
{!! Form::close() !!}</td>
控制器
public function destroy($report_id){
Report::destroy($report_id);
//$request->session()->flash('alert-success', ' Report is deleted successfully.');
return redirect()->route('admin.flags');
}
Call to a member function delete() on string
的错误。 - VLSdd($report);
返回"1"
,即字符串。 - VLS