Laravel 删除论坛主题
Laravel deleting a thread of a forum
我已经搜索并尝试了很多类似案例的解决方案,但对我的案例没有任何效果。我对 Laravel 还是很陌生,对 eloquent 不是很了解。我正在尝试删除论坛的帖子,请帮忙。
这是删除话题的路径:
Route::get('/forum/{forum_id}/thread/{thread_id}/delete', [
'uses' => 'ForumsController@deleteThread',
'as' => 'thread.delete']);
这是函数(我不知道如何获取线程id):
public function deleteThread($id)
{
$forum = Forum::find($id);
$thread = $forum->threads;
dd($thread);
$thread->delete();
return redirect()->back();
}
这是删除按钮:
<a href="{{ route('thread.delete', ['forum_id' => $forum->id, 'thread_id' => $thread->id]) }}" class="btn btn-danger">Delete</a>
这是论坛模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Forum extends Model
{
public function threads () {
return $this->hasMany(Thread::class);
}
}
这是线程模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model
{
public function forum () {
return $this->belongsTo(Forum::class);
}
}
您的路线如下所示:
Route::get('/forum/{forum_id}/thread/{thread_id}/delete', [ ... ])
您必须使用 forum_id
和 thread_id
作为控制器函数的参数:
public function deleteThread($forum_id, $thread_id)
{
$forum = Forum::find($forum_id);
$thread = Thread::find($thread_id);
$thread->delete();
return redirect()->back();
}
您甚至可以让 Laravel 为您将 Forum
和 Thread
注入控制器 - 通过在函数上输入提示:
public function deleteThread(Forum $forum, Thread $thread)
{
$thread->delete();
return redirect()->back();
}
当然你必须分别将路由的forum_id
参数调整为forum
,将thread_id
调整为thread
。这还需要在其他视图中更改您传递给 URL 的参数(又名 删除按钮 )。
更新
顺便说一下,您不应该使用获取请求进行删除。您应该使用 DELETE
HTTP 请求。
你应该试试这个:
public function deleteThread($forum_id,$thread_id)
{
Thread::destroy($thread_id);
return redirect()->back();
}
我已经搜索并尝试了很多类似案例的解决方案,但对我的案例没有任何效果。我对 Laravel 还是很陌生,对 eloquent 不是很了解。我正在尝试删除论坛的帖子,请帮忙。
这是删除话题的路径:
Route::get('/forum/{forum_id}/thread/{thread_id}/delete', [
'uses' => 'ForumsController@deleteThread',
'as' => 'thread.delete']);
这是函数(我不知道如何获取线程id):
public function deleteThread($id)
{
$forum = Forum::find($id);
$thread = $forum->threads;
dd($thread);
$thread->delete();
return redirect()->back();
}
这是删除按钮:
<a href="{{ route('thread.delete', ['forum_id' => $forum->id, 'thread_id' => $thread->id]) }}" class="btn btn-danger">Delete</a>
这是论坛模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Forum extends Model
{
public function threads () {
return $this->hasMany(Thread::class);
}
}
这是线程模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model
{
public function forum () {
return $this->belongsTo(Forum::class);
}
}
您的路线如下所示:
Route::get('/forum/{forum_id}/thread/{thread_id}/delete', [ ... ])
您必须使用 forum_id
和 thread_id
作为控制器函数的参数:
public function deleteThread($forum_id, $thread_id)
{
$forum = Forum::find($forum_id);
$thread = Thread::find($thread_id);
$thread->delete();
return redirect()->back();
}
您甚至可以让 Laravel 为您将 Forum
和 Thread
注入控制器 - 通过在函数上输入提示:
public function deleteThread(Forum $forum, Thread $thread)
{
$thread->delete();
return redirect()->back();
}
当然你必须分别将路由的forum_id
参数调整为forum
,将thread_id
调整为thread
。这还需要在其他视图中更改您传递给 URL 的参数(又名 删除按钮 )。
更新
顺便说一下,您不应该使用获取请求进行删除。您应该使用 DELETE
HTTP 请求。
你应该试试这个:
public function deleteThread($forum_id,$thread_id)
{
Thread::destroy($thread_id);
return redirect()->back();
}