我正在使用 laravel 5.4。
我有一个指向具有以下属性的数据库表的模型。
id integer
name varchar
location varchar
deleted boolean
这是一张旧表,由于它缠绕在一堆代码中,我们无法更改此表。
我想做的是在模型中利用 Laravel 的软删除功能。我知道 laravel 期望数据库表上的列名是 deleted_at
并且数据类型是 date
。
我如何重写它以便 Laravel 将查看 deleted
列并检查它是否是 boolean
?
我尝试查看我的模型继承自的类,但未能找到处理此问题的常量和函数的定义位置。我怀疑它可能在收藏中,但没有运气。
理想情况下,我只想重新定义模型中的函数。
谢谢。
最佳答案
查看 Illuminate\Database\Eloquent\SoftDeletes
trait 并覆盖模型中的 runSoftDelete()
和 getDeletedAtColumn
方法。
在 runSoftDelete()
中使用 boolean
而不是时间戳,在 getDeletedAtColumn()
中使用 DELETED
而不是 DELETED_AT
另一种解决方案是添加 global scopes或 local scopes处理软删除数据。
关于php - 覆盖模型的软删除表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721342/