删除记录后 Livewire 分页返回 404 未找到

Livewire pagination returning 404 not found after deleting a record

调用 delete() 方法后,尝试转到 table 的另一页时,出现 404 未找到错误。

这是我的删除方法:

public $selected = [];

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

我尝试了以下方法

None 以上似乎解决了问题,所以我在这里结束,希望你们中的一些人遇到同样的问题并设法解决它。

谢谢。

/**更新**/

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

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

看来你在看 livewire 截屏视频,我也一直在看。很可能您在创建记录后立即将其删除。在这种情况下,您的 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 也忽略了这一点,他的演示项目有这个小错误。

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

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

$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内存中。