【问题标题】:Livewire pagination returning 404 not found after deleting a record删除记录后未找到 Livewire 分页返回 404
【发布时间】:2021-07-23 01:15:51
【问题描述】:

调用delete()方法后,当试图转到表的另一页时,我得到一个404 not found错误。

这是我的删除方法:

public $selected = [];

 public function deleteSelected()
    {
        $products = Products::whereKey($this->selected);
        $products->delete();
        $this->showDeleteModal = false;
        $this->selected = [];
    }

我尝试了以下

  • 为了改变我在组件视图中调用分页的方式,而不是{{ $products->links() }},我尝试了{{ $products->withQueryString()->links() }}
  • 我尝试在config\livewire.php 中将'asset_url'null 更改为http://localhost
  • 我试过php artisan route:clearphp artisan route:cache

以上似乎都不能解决问题,所以我最终来到这里,希望你们中的一些人遇到同样的问题并设法解决它。

谢谢。

/** 更新 **/

我刚刚在一个新的 Laravel 项目上重建了数据表,我遇到了同样的错误。

如果有人感兴趣,我用代码制作了一个 github repo: https://github.com/mvpopuk/livewire-datatable

【问题讨论】:

标签: php laravel laravel-livewire


【解决方案1】:

您似乎正在观看现场直播的截屏视频,我也一直在这样做。而且很可能您在创建记录后立即删除它。在这种情况下,您的 Livewire 组件中的“编辑”属性仍然指示已删除的模型,这会导致每个下一个请求的 404 响应。

您应该在删除操作后将“编辑”属性重置为新模型。

public function deleteSelected()
{
    $products = Products::whereKey($this->selected);
    $products->delete();
    $this->showDeleteModal = false;
    $this->selected = [];
    $this->editing = Products:make(); // or new Product()
}

有趣的是,Caleb Porzio 也错过了这一点,他的演示项目有这个小错误。

【讨论】:

    【解决方案2】:

    在删除刚刚创建的用户记录(在模式中)时,我遇到了同样的问题。

    然后我编辑了记录,使用如下用户数据:

    $user = User::findOrFail($id);
    $this->user = $user; // assigning the public property for edit modal (in Livewire memory now)
    

    然后当我立即尝试删除它时,我遇到了 404 问题。 为了解决这个问题,我使用了link 中的解决方案: 基本上我必须将相应的模型记录设置为空,它仍然存在于 Livewire 内存中(在最后一步的编辑期间)。

    $user_id = User::findOrFail($id);
    $user_id->delete();
    $this->user = null; // Important
    

    为了解决这个问题,我们还可以选择软删除。只需将数据库中的用户记录状态列更新为0,这样模型记录就存在于Livewire内存中。

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2020-04-17
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多