我正在处理laravel 5.4
的新闻线程。我的问题是,每当用户想要删除帖子时,如果有与他具有相同id
的帖子,它将删除它而不是我最初想要销毁的帖子。 但是如果没有,他可以毫无问题地删除他的帖子。例如,我的用户有一个 id4
,想要删除他的 id 为12
的帖子。我第一次点击我的删除链接时,它会删除id
4
的帖子。当这个人不再存在时,他可以用12
id
摧毁帖子.
控制器中的功能
/**
* Remove the specified resource from storage.
*
* @param AppStartUpPost $startUpPost
* @return IlluminateHttpResponse
*/
public function destroy(StartUpPost $startUpPost)
{
$post = StartUpPost::find($startUpPost);
$post->delete();
return redirect('startup/home') -> with('success', 'Post deleted !');
}
路线
Route::get('/StartUpPost/{startUpPost}/delete',[
'uses' => 'StartUpPostController@destroy',
'as'=>'startUpPost.delete'
]);
HTML 中的链接
<a href="{{route('startUpPost.delete', ['startUpPost' => $startuppost->id])}}">Delete</a>
模型
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class StartUpPost extends Model
{
protected $table = 'start_up_posts';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'content','startup_id','image',
];
public function startup() {
return $this->belongsTo('AppStartup');
}
public function startUpComments() {
return $this->hasMany('AppStartUpComment');
}
}
我做错了什么?
您的控制器函数应如下所示:(无需再次搜索该项目,您已经在功能参数中拥有它StartUpPost $startUpPost
public function destroy(StartUpPost $startUpPost)
{
$startUpPost->delete();
return redirect('startup/home') -> with('success', 'Post deleted !');
}
在点击按钮之前检查按钮,错误必须在您的操作链接中删除帖子,检查您如何加载每个按钮
你有$startuppost->id
. 那么这是哪个帖子?我想它需要第一个。问题可能出在删除$startuppost
之前选择的查询中