Я пытаюсь удалить сообщение, нажав на кнопку удаления, но у меня есть проблема. Если я нажимаю кнопку «Удалить», он удаляет все сообщения этого пользователя, кроме той, на которую я нажал.
В чем проблема?
Мои маршруты.php:
Route::get('deletepost/{post_id}', 'PostController@getDeletePost')->name('delete');
Мой ПостКонтроллер:
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!']);
}
Модель «Мой пост»:
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();
не находит сообщение с идентификатором. Измените это на Post::where('id', $post_id)->firstOrFail();
и он выдаст исключение, которое вы можете поймать (Illuminate \ Database \ Eloquent \ ModelNotFoundException).
Других решений пока нет …