我有一个包含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
从终端获得很多次根,但它不起作用。
答案 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();
希望为您的朋友工作:)