Laravel 删除除我点击以外的所有帖子
Laravel delete all posts except that i clicked
我尝试通过单击删除按钮删除 post,但我遇到了问题。如果我单击删除按钮,它会删除该用户的所有 post,但我单击的 post 除外。
有什么问题吗?
我的routes.php:
Route::get('deletepost/{post_id}', 'PostController@getDeletePost')->name('delete');
我的Post控制器:
public function getDeletePost($post_id){
$post = Post::where('id', $post_id)->first();
if(Auth::user() != $post->user){
return redirect()->back();
}
$post->delete();
return redirect()->route('dashboard')->with(['message' => 'Successfully deleted!']);
}
我的Post模特:
public function user(){
return $this->belongsTo('App\User');
}
我的用户模型:
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function posts(){
return $this->hasMany('App\Post');
}
}
和仪表板:
@if(Auth::user() == $post->user)
<a href="#">Edit</a>
<a href=" {{ route('delete', ['post_id' => $post->id]) }}">Delete</a>
@endif
我正在使用 Laravel v5.2.39。有什么帮助吗?谢谢。
这是因为 Post::where('id', $post_id)->first();
没有找到具有 ID 的 post。改成Post::where('id', $post_id)->firstOrFail();
会抛出一个异常,你可以catch(Illuminate\Database\Eloquent\ModelNotFoundException).
我尝试通过单击删除按钮删除 post,但我遇到了问题。如果我单击删除按钮,它会删除该用户的所有 post,但我单击的 post 除外。 有什么问题吗?
我的routes.php:
Route::get('deletepost/{post_id}', 'PostController@getDeletePost')->name('delete');
我的Post控制器:
public function getDeletePost($post_id){
$post = Post::where('id', $post_id)->first();
if(Auth::user() != $post->user){
return redirect()->back();
}
$post->delete();
return redirect()->route('dashboard')->with(['message' => 'Successfully deleted!']);
}
我的Post模特:
public function user(){
return $this->belongsTo('App\User');
}
我的用户模型:
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function posts(){
return $this->hasMany('App\Post');
}
}
和仪表板:
@if(Auth::user() == $post->user)
<a href="#">Edit</a>
<a href=" {{ route('delete', ['post_id' => $post->id]) }}">Delete</a>
@endif
我正在使用 Laravel v5.2.39。有什么帮助吗?谢谢。
这是因为 Post::where('id', $post_id)->first();
没有找到具有 ID 的 post。改成Post::where('id', $post_id)->firstOrFail();
会抛出一个异常,你可以catch(Illuminate\Database\Eloquent\ModelNotFoundException).