我收到错误:
Macroable.php 第 74 行中的 BadMethodCallException:方法删除确实 不存在。
路线:
Route::resource('posts', 'PostController');
我的控制器:
public function destroy($id)
{
$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->get();
$post->delete();
return view('/home', [
'posts' => $post
]);
}
查看:
<form action="{{ route('posts.destroy', '$post->id') }}" method="post">
<input type="hidden" name="_method" value="DELETE" />
{{ csrf_field() }}
{{ method_field('DELETE') }}
<input type="submit" class="btn btn-danger" value="delete" />
</form>
我尝试将
method="post"
更改为
delete
:错误消失了,但没有删除任何内容..
$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->get();
$post->delete();
只需在删除之前添加
->each()
,就像这样,
$post->each->delete();
这对我有用。
$post= Post::where('id', $id)->where('user_id',$user_id);
$post->delete();
If you want to delete first document you can use :
$post= Post::where('id', $id)->where('user_id',$user_id)->first();
$post->delete();
但是,您始终需要检查 $post 是否被发现为查询文档或其 null,因此 addd :
if($post){
$post->delete();
}
->first() 而不是 ->get()
您无法使用delete() 删除整个集合
get
更改为
first
,然后检查该帖子是否属于该用户。
public function destroy($id)
{
$post = Post::where('id', $id)->first();
if($post && $post->user_id == \Auth::user()->id){
$post->delete();
return view('/home');
}else{
abort(404);
}
}
public function destroy($id)
{
$post = Post::find($id);
$post->delete();
//redirect to
return redirect()->back();
}
查看:
{!! Form::open(['method' => 'DELETE','route' => ['posts.destroy', $post->id],'style'=>'display:inline']) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}
试试这个。
希望您使用
创建了控制器
--资源旗帜。
posts
表的主键,您可以直接从表中删除,不需要
user_id
要从 Auth 外观获取 user_id,您应该使用,
$user_id = Auth::id();
只有传递 id 才可以工作,
Post::find($id)->delete()
但是,如果您知道模型的主键,则可以通过调用
destroy
方法删除模型而不检索它。除了单个主键作为其参数之外,
destroy
方法还接受多个主键、主键数组或主键的集合:
Post::destroy($id)
public function destroy($id)
{
$userId = Auth::user()->id;
$post = Post::where([
'id' => $id,
'user_id' => $userId
])->delete();
Session::flash('success', 'Post was successfully deleted!');
return redirect()->route('posts.index');
}
RFIResponseFile::where('rfi_response_id',$response_id)->delete();
Post::where('id', $id)->where('user_id',$user_id)->delete();
或者
$post= Post::where('id', $id)->where('user_id',$user_id);
if($post->get()->count()){
$post->delete();
}
public function destroy($id)
{
$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->first();
$post->delete();
return view('/home', [
'posts' => $post
]);
}
更改代码之前
public function destroy($id)
{
$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->get();
$post->delete();
return view('/home', [
'posts' => $post
]);
}
更改代码后
public function destroy($id)
{
$user_id = Auth::user();
$post= Post::where(['id'=>$id,'user_id'=>$user_id])->get();
Post::where(['id'=>$id,'user_id'=>$user_id])->delete();
return view('/home', [
'posts' => $post
]);
}
{!! Form::model($post, ['route' => ['posts.destroy', $post->id], 'method' => 'DELETE']) !!}
和
{!! Form::close() !!}
在底部
用于控制器
$post = Post::find($id);
$post->delete();
Session::flash('success', 'Menu was successfully deleted!');
return redirect()->route('posts.index');