使用 Laravel 5.2 从数据库表中删除行

VLS*_*VLS 6 php laravel laravel-5

最近我开始使用 Laravel 5.2,我正在尝试制作删除按钮,该按钮将从数据库中删除行。非常基本和琐碎,但似乎我做不到。

我正在关注删除文档:https : //laravel.com/docs/5.2/queries#deletes

我已经做到了。我的路线:

Route::post('flags/destroy/{delete}', 'FlagsController@destroy')->name('admin.flags.destroy');
Run Code Online (Sandbox Code Playgroud)

视图中的按钮

{!! Html::linkRoute('admin.flags.destroy', 'Delete', $flag->report_id) !!}
Run Code Online (Sandbox Code Playgroud)

和控制器

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');
}
Run Code Online (Sandbox Code Playgroud)

我尝试过其他线程的解决方案,但总是出错:

在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
Run Code Online (Sandbox Code Playgroud)

为什么是搜索id而不是report_id

更新:

按钮

{!! Html::linkRoute('admin.flags.destroy', 'Delete', $flag->report_id) !!}
Run Code Online (Sandbox Code Playgroud)

控制器

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');
}
Run Code Online (Sandbox Code Playgroud)

路线

Route::get('flags/destroy/{delete}', 'FlagsController@destroy')->name('admin.flags.destroy');
Run Code Online (Sandbox Code Playgroud)

更新 2:这似乎有效,但它足够安全吗?看法:

 {!! Form::open(array('route' => array('admin.flags.destroy', $flag->report_id), 'method' => 'get')) !!}
        <button type="submit">Delete</button>
 {!! Form::close() !!}</td> 
Run Code Online (Sandbox Code Playgroud)

控制器

public function destroy($report_id){

  Report::destroy($report_id);
  //$request->session()->flash('alert-success', ' Report is deleted successfully.');

  return redirect()->route('admin.flags');
}
Run Code Online (Sandbox Code Playgroud)

Add*_*Ltd 5

我认为您的代码需要更新如下:

public function destroy($delete){

   $report = $delete;      

   $rsltDelRec = Report::find($report);

   $rsltDelRec->delete();        
   $request->session()->flash('alert-success', ' Report is deleted successfully.');

   return redirect()->route('admin.flags');
}
Run Code Online (Sandbox Code Playgroud)

希望这对你有用!