覆盖模型的软删除表列

时间:2017-12-08 19:59:20

标签: php mysql laravel

我正在使用laravel 5.4。

我有一个指向具有以下属性的数据库表的模型。

id       integer
name     varchar
location varchar
deleted  boolean

这是一张旧表,由于它与一堆代码纠缠在一起,我们无法更改此表。

我想要做的是利用模型中的laravels软删除功能。我知道laravel期望列名为deleted_at,数据类型为date数据库表。

如何覆盖这一点,以便Laravel查看专栏deleted并检查它是否为boolean

我已经尝试查看我的模型继承的类,但是无法找到定义处理它的常量和函数的位置。我怀疑它可能在收藏品上,但没有运气。

理想情况下,我想简单地重新定义模型中的函数。

感谢。

1 个答案:

答案 0 :(得分:3)

查看Illuminate \ Database \ Eloquent \ SoftDeletes特征并覆盖模型中的runSoftDelete()和getDeletedAtColumn方法。 在runSoftDelete()中使用boolean而不是timestamp,在getDeletedAtColumn()中使用DELETED而不是DELETED_AT 另一种解决方案是添加全局范围或本地范围以使用软删除数据。