显示 Laravel 个 SoftDeleted 模型

Show Laravel SoftDeleted Models

我遇到了一个问题,我不确定这是否不是一项功能。问题如下。我创建了一个设备数据库,用户可以在其中创建、操作、软删除和删除设备。

在我的索引页面上,我能够显示所有设备,甚至是软删除的设备(应该如此)。 Screen

但是,当我单击一个设备(显示方法)以查看该设备的详细信息时,我在软删除设备上收到 404。

通过 Tinker 请求模型时,我得到了模型。当我删除 deleted_at 时间戳时,我可以访问设备详细信息。所以我似乎无法通过 show 方法访问软删除模型。

我在网上搜索,但在我的查询中只找到 ->withTrashed()。但是对于 show 方法,我对我的设备本身没有任何查询,因为它在参数中。该方法本身似乎没有得到任何 'device' 作为参数。 是否有可能以某种方式改变这种行为,所以我可以在恢复之前先查看被软删除的设备。还是我错过了另一个文件中的某种标志或引用?

这里是我的展示方法:

public function show(Device $device)
  {
    $connected_devices = Device::where('connected_to', $device->id)->get();
    $comments = DeviceComment::where('device_id', $device->id)->orderBy('created_at', 'desc')->get();
    return view('devices.show', ['device' => $device, 'connected_devices' => $connected_devices, 'comments' => $comments]);
  }

但我想我之前必须做一些事情,因为当我在第一行添加 'dd' 时它没有显示我的 dd 我仍然得到 404.

亲切的问候 迈克

我想 Laravel returns 404 因为在进入控制器之前它正在尝试加载您的模型。默认情况下查询不会有 ->withTrashed() 方法,您应该自己更改查询。

要清楚地了解其工作原理,请查看有关 Explicit bindings

的文档