使用id按钮laravel 5.6从数据库中删除一行?

时间:2018-05-08 13:50:11

标签: php html laravel

我有一个包含2个组件的数据库表,id和body,正文是一个文本,正如我在laravel数据库迁移中指定的那样:

$table->increments('id');
$table->text('body');

我用我的终端php artisan make:controller todoController --resource创建了一个文件控制器todocontroller --resource以及下面的命令,我有很多功能:它们之间有3个与id有关系:

public function show($id)
    {
      return $id ;
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
      DB::table('todos')->where('id', '=', $id)->delete();
   return view('pages.home');;
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

我想从Home.blade.php中创建它的简单点击按钮删除我喜欢的行:

<ul class="list-group">
    @foreach($todos as $todo)
  <li class="list-group-item d-flex justify-content-between align-items-center">
  <form action="" method="">
  <button type="button" class="btn btn-success" >{{$todo->id}}</button>
</form>
  </li>
    @endforeach
</ul>

我尝试使用php artisan route:list从终端获得很多次根,但它不起作用。

3 个答案:

答案 0 :(得分:0)

对于资源路径中的删除,您可以编写新路径

Route::get('/todo/delete/{id},'todoController@destroy')->name('todo.destroy');


<ul class="list-group">
@foreach($todos as $todo)
  <li class="list-group-item d-flex justify-content-between align- 
 items-center">
  <form action="" method="">


  <a href="{{route('todo.destroy',$todo->id)}}"><button type="button" class="btn btn-success" >Delete</button></a
 </form>
  </li>
@endforeach

public function destroy($id)
{

}

答案 1 :(得分:0)

在您的控制器中:

public function destroy($id)
{
    $todo= Todo::find($id);
    $todo->delete();
    return redirect()->route('homepage');
}

在视图中:

@foreach(...)
    {!! Form::open(['route' => ['todos.destroy', $todo->id], 'method' => 'DELETE']) !!}
    {!! Form::submit('DELETE') !!}
    {!! Form::close() !!}
@endforeach

答案 2 :(得分:0)

在laravel 5.6中,这很简单,只是使用下面的代码基于row的ID删除数据库的一行:

1-首先在web.php中为控制器的delete方法定义名称,我们需要它以刀片形式调用

Route::delete('todos/{todo}', 'TodoController@destroy')->name('todos.delete');

2-在刀片文件中,只需创建如下所示的表单(只需将其替换为foreach循环中的表单即可)

<form method="post" action={{ route('todos.delete') , ['id' => $todo->id] }}> {!! csrf_field() !!} <input type="hidden" value="DELETE"/> <button type="submit">click to delete this row base on id</button>

3-控制器的最后一种销毁方法

$todo = Todo::whereId($id); $todo->delete(); return back();

希望为您的朋友工作:)