laravel 无法删除记录

Posted

技术标签:

【中文标题】laravel 无法删除记录【英文标题】:Unable to delete record in laravel 【发布时间】:2020-01-04 22:28:48 【问题描述】:

我正在尝试删除一条记录,但无法在控制器中使用删除功能。一切似乎都很好。

尝试使用资源控制器 destroy 功能以及自定义路由。但是表单不会发布到控制器,而是刷新在 URL 中显示令牌和方法。

以前,我使用 javascript 函数来确认删除,但它也不起作用。所以我切换到直接发布。

这是未提交的 Javascript 代码:

未捕获的类型错误:无法读取 null 的属性“提交”

但是,console.log(id) 给了我正确的 ID。

即使我在网站的任何地方都在使用这个 Javascript 函数,但在这个页面上它不起作用。

function confirmDeleteUserCartItem(id)

  let choice = confirm("Are You Sure You Want To Delete This Item ?")
  if (choice)
  
    document.getElementById('delete-usercart-item-' + id).submit();
  

查看:尝试了 2 条路线

<form method="POST" action=" route('user.cart.delete', $item->id) ">
 @csrf  
 @method('DELETE')
  <button class="btn btn-danger">Delete</button>
</form>
 <form method="POST" action="route('user.cart.destroy', $item->id)">
  @csrf  
  @method('DELETE')
 <button type="submit" class="remove">
  <i class="far fa-trash-alt"></i>
 </button>
 </form>

这是我点击删除后在 URL 中得到的内容:

?_token=klYTBg3OBr0oLfTeS9tSGJwBepgLX8wtCsKRgMOR&_method=DELETE

【问题讨论】:

你的 web.php 路由文件是什么样子的? 奇怪的事情正在发生。我可以删除在第一条记录之后添加的记录。但是第一条记录没有被删除,只有页面重定向和令牌显示在 url 中。即使第一个记录是清除购物车后的另一项。 您能否检查是否可以使用 ::find() 检索特定记录的模型;方法? 【参考方案1】:

如果可行,试试这个。我希望如果您的 route 和控制器 destroy 方法没问题,那么它应该可以工作 -

 <form method="POST" action="route('user.cart.destroy', $item->id)" 
                           onsubmit="return confirmDeleteUserCartItem()">
   @csrf  
   @method('DELETE')
   <button type="submit" class="remove">
       <i class="far fa-trash-alt"></i>
   </button>
 </form>

还有你的javascript方法-

<script>
  function confirmDeleteUserCartItem()
  

     let choice = confirm("Are You Sure You Want To Delete This Item ?")
     if (choice)
        return true;
     else
        return false;
  
</script>

【讨论】:

【参考方案2】:

解决了这个问题。 我在视图中使用的 html 模板中有另一个表单标签。 它正在停止删除表单以提交。

【讨论】:

以上是关于laravel 无法删除记录的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 不删除记录

无法删除或更新父行:Laravel

Laravel 查询包括软删除的记录

laravel 中删除多条记录

Laravel 删除一周前的所有记录

调用Factory时Laravel记录被删除