php - 覆盖模型的软删除表列

标签 php mysql laravel

我正在使用 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 scopeslocal scopes处理软删除数据。

关于php - 覆盖模型的软删除表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721342/

相关文章:

PHP在函数中声明全局变量

php - 如何即时重置 jquery 函数

timezone - 未设置 PHP 时区

java - 尝试从 Mysql 数据库获取数据(Spring Boot + Vaadin)

MySQL查询分析器

laravel - 重定向 Laravel 后如何打开弹出窗口?

php - 如何控制使用 `imagettftext()` 生成的文本的文本对齐方式?

php - 使用 mysql 和 php 在导入时强制使用新的数据库名称

Laravel 社交名流 $user->getId()?

php - Laravel 路由重定向数据