Laravel / Livewire:在模型路线绑定上使用withTrashed()以显示已删除的记录

艾宾

在列表中,我显示最新主题,包括已删除的主题。

function latest()
{
    return Topic::withTrashed()->latest();
}

为了显示单个主题,我有一个带有该主题的Livewire组件。

class ShowTopic extends Component
{
    public $topic;

    public function mount(Topic $topic)
    {
        $this->topic = $topic;
    }

    public function render()
    {
        return view('livewire.show-topic', [
            'topic' => $this->topic,
        ]);
    }
}

但是当我转到一个已删除的主题时,它不会显示。如何withTrashed()在模型路线绑定上使用Livewire组件显示已删除的记录?

齐雷尔

您可以覆盖resolveRouteBinding()Eloquent模型上方法,并有条件地删除SoftDeletingScope全局范围。

在这里,我正在使用该模型的策略来检查我是否可以delete模型-如果用户可以删除它,他们也可以看到它。您可以实现所需的任何逻辑,或者如果更适合您的应用程序,则删除所有请求的全局范围。

use Illuminate\Database\Eloquent\SoftDeletingScope;

class Topic extends Model {
    // ...

    /**
    * Retrieve the model for a bound value.
    *
    * @param  mixed  $value
    * @param  string|null  $field
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function resolveRouteBinding($value, $field = null)
    {
        // If no field was given, use the primary key
        if ($field === null) {
            $field = $this->getKey();
        }

        // Apply where clause
        $query = $this->where($field, $value);

        // Conditionally remove the softdelete scope to allow seeing soft-deleted records
        if (Auth::check() && Auth::user()->can('delete', $this)) {
            $query->withoutGlobalScope(SoftDeletingScope::class);
        }

        // Find the first record, or abort
        return $query->firstOrFail();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel路线模型与关系的绑定

来自分类Dev

Laravel Livewire绑定模型Carbon属性

来自分类Dev

使用模型绑定Laravel 5.1销毁多个记录

来自分类Dev

使用自定义方法模型laravel删除记录错误

来自分类Dev

Laravel路线模型

来自分类Dev

Laravel方法模型绑定?

来自分类Dev

使用laravel删除功能删除记录

来自分类Dev

使用laravel删除功能删除记录的麻烦

来自分类Dev

子类模型的 Laravel 模型绑定

来自分类Dev

在 Laravel 中删除记录

来自分类Dev

如何使用Laravel Eloquent删除多个记录

来自分类Dev

无法使用口才在Laravel中删除模型

来自分类Dev

Laravel 模型,未调用已删除的回调

来自分类Dev

使用Laravel Websockets在Laravel Echo上绑定回调

来自分类Dev

Laravel雄辩的模型解除绑定

来自分类Dev

Laravel缓存与路由模型绑定?

来自分类Dev

Laravel LiveWire属性嵌套绑定未在表单字段中显示值

来自分类Dev

CRUD - 在 Laravel 上删除

来自分类Dev

使用Laravel路线链接中的按钮删除产品

来自分类Dev

在Laravel 4模型上使用setConnection

来自分类Dev

Laravel在非口才模型上使用-> lists()

来自分类Dev

Laravel 5.1:使用hasManyThrough()在模型上的分页

来自分类Dev

laravel livewire数据未以模态显示

来自分类Dev

在每次迭代中显示文本laravel Livewire

来自分类Dev

使用Laravel 7 Api路线

来自分类Dev

在Laravel路线中使用参数

来自分类Dev

Laravel迁移已删除文件

来自分类Dev

Laravel 急切加载 withTrashed

来自分类Dev

Laravel查询路线/控制器/模型等