【问题标题】:Laravel 8 Does Not Delete Data From DBLaravel 8 不会从数据库中删除数据
【发布时间】:2021-06-08 13:01:21
【问题描述】:

我正在使用 Laravel 8 开发我的项目,现在我想从数据库中删除一个数据,所以我添加了这个表单:

<form action="{{ route('destroy.question', $show->slug) }}" method="POST">
   @csrf
   @method('DELETE')
   <button type="submit" class="text-blue-500 BJadidBold">Delete Question</button>
</form>

这里是路线:

Route::delete('questions/{slug}' , [QuestionController::class, 'destroyQuestion'])->name('destroy.question');

这是控制器方法:

public function destroyQuestion(Question $show)
    {
        if($show->ownedBy(auth()->user())){
            $show->delete();

            return back();
        }
    }

现在的问题是,它没有成功,我的意思是它正确地抓住了slug,但它显示了 404 不知何故找不到页面!

我也对此进行了测试:

public function destroyQuestion(Question $show)
    {
        dd($show);
    }

但是还是显示404 NOT FOUND页面,说明进程没有到达Controller方法destroyAnswer()

那么我该如何解决这个问题呢?

非常感谢你们的任何想法或建议......

谢谢。

【问题讨论】:

  • 您的标题非常具有误导性,实际上与您的问题无关。
  • 尝试将函数 destroyQuestion(Question $show) 替换为函数 destroyQuestion(Question $slug)
  • @RiggsFolly 你好,你能写出更好的标题吗?谢谢
  • 你的路由和方法参数需要同名。

标签: php laravel laravel-8


【解决方案1】:

您没有正确绑定路由模型。您正在尝试通过 slug 查找问题,这不是主键。 Laravel 允许你通过在 slug 前加上 question: 来做到这一点。试试这个:

use App\Models\Question;

Route::delete('questions/{question:slug}' , [QuestionController::class, 'destroyQuestion'])->name('destroy.question');

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2020-01-06
    • 2017-11-29
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多