首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

即使deleted_at不为null,Laravel SoftDeletes仍然返回连接中使用的记录吗?

Laravel SoftDeletes是Laravel框架中的一个特性,用于实现软删除功能。当一个模型使用了SoftDeletes trait后,可以通过调用delete()方法将该模型标记为已删除,而不是真正从数据库中删除。软删除的记录在数据库中会被标记为已删除,但仍然可以通过查询获取到这些记录。

即使deleted_at字段不为null,Laravel SoftDeletes仍然返回连接中使用的记录。这是因为SoftDeletes trait在查询数据时会自动过滤掉已删除的记录。在查询模型时,Laravel会自动添加一个whereNull('deleted_at')的条件,以排除已删除的记录。这样,即使软删除的记录在数据库中仍然存在,但在查询时不会返回这些记录。

Laravel SoftDeletes的优势在于可以方便地实现数据的软删除和恢复。通过软删除,可以保留数据的完整性和历史记录,同时避免了真正删除数据可能引发的数据丢失和关联数据的问题。软删除还可以用于实现回收站功能,用户可以将数据标记为已删除,但仍然可以在需要时恢复数据。

Laravel SoftDeletes的应用场景包括但不限于以下情况:

  1. 用户管理系统:当用户注销账号时,可以使用软删除将用户标记为已删除,但仍然保留用户的信息和历史记录。
  2. 文章管理系统:当管理员删除文章时,可以使用软删除将文章标记为已删除,但仍然保留文章的评论和相关数据。
  3. 商品管理系统:当商品下架或删除时,可以使用软删除将商品标记为已删除,但仍然保留订单和交易记录。

对于腾讯云相关产品,推荐使用腾讯云的云服务器(CVM)来部署和运行Laravel应用程序。腾讯云云服务器提供了高性能、可靠稳定的计算资源,可以满足各种规模的应用需求。您可以通过以下链接了解腾讯云云服务器的详细信息:

请注意,本回答中没有提及其他云计算品牌商,如有需要可以进一步咨询。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

3分钟短文:Laravel说要用软删除,可不要真删

所以,软删除概念,极为重要。 本文我们仍然不厌其烦地讲解软删除功能。 物理删除 其实就是真实地把数据从数据库条目清除,laravel模型提供了开箱即用方法。...比如下面这样使用: $event = Event::find(12); $event->delete(); 首先使用primary key查询出需要条目,返回一个Event对象实例,然后调用 delete...软删除 在许多情况下,你不会真正想要从数据库删除记录,而是用一种不再在应用程序显示它们方式对其进行注释。这就是所谓软删除。...任何设置deleted_at为日期时间值记录,都不会包含在任何查询结果,因此看起来已经被删除了。...这样操作非常有用,因为误删除数据,随时可以通过设置 deleted_at = null 而恢复到正常业务流程,比如删除用户,删除订单,等等其他资源。

2.2K00
  • 3分钟短文:Laravel 检查记录是否被软删除

    引言 laravel模型引入了SoftDeletes这个全局作用域用于将数据库条目 标记为删除,而实际上并不清除数据,这样可以为后续数据恢复做铺垫。...{ use SoftDeletes; } 如果数据库表中正好是使用 deleted_at 标记删除日期时间,那么无需手动指定该字段为软删除字段了。...使用了软删除功能后,会在模型查询方法上,默认追加 where deleted_at is null 那么如果使用了全量查询后,如何判断一个记录是否是已经软删除呢?laravel提供了这些功能。...方法,则是删除模型记录。...写在最后 本文通过对laravel模型软删除源码分析, 为大家展示了引入软删除功能,并自定义软删除标记字段方法。通过模型提供方法,进而判断记录是否已软删除。

    1.5K30

    laravel 模型Eloquent ORM 添加编辑删除

    create 方法返回值就是当前插入到数据库内容up可以通过返回值判断成功或者失败而实际开发up经常需要返回新增数据id那直接访问返回 id 属性即可。...自动都变成了插入或者修改时间了,这就是使用模型好处一大好处 删除 但是最后这个 deleted_at 是空,这个字段应该怎么用呢?...softDeletes 即可,模型默认是没有开启软删除功能开启也很简单就是使用SoftDeletes <?...Laravel 数据库迁移 有创建这个字段方法 现在,当你在模型实例上使用 delete 方法, 当前日期时间会写入 deleted_at 字段。...数据并没有真正被删除只是 deleted_at 不是 null 而是删除时间了 让我们用代码去查询一下访问一下之前 index 方法 ?

    1.7K21

    laravel 学习之路 数据库操作 Migrations

    Laravel Schema 门面 提供数据库无关支持,用于在所有 Laravel 支持数据库系统创建和操作表 创建迁移 使用 make:migration Artisan命令来创建迁移 php...在这两种方法,你可以使用 Laravel 结构生成器以表达式方式创建和修改表。...$table->softDeletes(); 这个方法就是为表增加一个 deleted_atlaravel 会在删除数据时候记录操作日期,具体到功能比如 回收站 功能了,我们可能会删除某些数据,...但是我们还希望能恢复删除数据,当某条数据 deleted_atnull 时候表示正常,当有日期时候就表示这条数据是在这个日期被删掉了。...timestamp ,其他字段都多了个 NOT NULL ,这个我们并没有在迁移中指定,这里就需要解释下了,这个 NOT NULLlaravel 为我们默认添加,那如果确实有字段想让它允许为

    2.3K20

    通过 Laravel Eloquent 模型实现批量赋值和软删除

    实现原理 Eloquent 模型类为我们提供了「软删除」功能支持。这就意味着,在 Laravel ,我们不需要编写任何额外代码就可以实现对数据库记录「软删除」。...其底层实现原理是在支持软删除数据表添加一个 deleted_at 字段,这可以通过数据库迁移来实现。...该字段默认值为 NULL,表示没有被软删除。如果要在模型类中支持软删除,需要在对应模型类(在本例是 Post 模型)添加支持软删除 Trait: <?...注:你也可以修改这个默认约定 deleted_at 字段,但何必费这个劲呢,除非你是从其它系统迁移过来,原来表结构已经存在了,这时候可以通过再模型类设置静态属性 DELETED_AT 来自定义软删除字段...如果想要在查询结果中出现软删除记录,可以通过在查询时候调用 withTrashed 方法实现: $post = Post::withTrashed()->find(32); 返回结果和正常查询结果一样

    2.4K10

    3分钟短文:Laravel 从软删除说到模型作用域概念

    代码时间 常规删除操作分两步进行,一步是把数据从数据库查询出来,使用laravel模型方法, 则返回是一个模型对象。第二步,调用模型对象delete方法。...所以引入了软删除概念,就是在表内添加一个字段,用于标记,这一行条目是否算是删除状态。在laravel, 这个软删除字段默认是 deleted_at。你也可以在模型手动指定。...$table->softDeletes();}); 那么迁移成功后,生成contacts表内会添加deleted_at字段。...然后在模型,引入软删除功能,将其进行全局生效使用。...写在最后 本文从laravel模型写操作删除动作,讲到了软删除概念。进而引申出来本地作用域和全局作用域使用。软删除几乎贯穿了我们应用始终,需要大家勤学苦练。

    1.3K30

    Laravel5.7 Eloquent ORM快速入门详解

    默认情况下,所有的 Eloquent 模型使用应用配置默认数据库连接,如果你想要为模型指定不同连接,可以通过 $connection 属性来设置: <?...firstOrNew 方法和 firstOrCreate 方法一样先尝试在数据库查找匹配记录,如果没有找到,则返回一个新模型实例。...要启用模型软删除功能,可以使用模型上Illuminate\Database\Eloquent\SoftDeletes trait 并添加 deleted_at 列到 $dates 属性: <?...,要从数据库永久删除记录,可以使用 forceDelete 方法: // 强制删除单个模型实例......Laravel 自带软删除功能就使用了全局作用域来从数据库拉出所有没有被删除模型。编写自定义全局作用域可以提供一种方便、简单方式来确保给定模型每个查询都有特定条件约束。

    15.1K41

    最为常用Laravel操作(1)-Eloquent模型

    关闭时间戳记录 public $timestamps = false; 获取模型数据 // Eloquent all 方法返回模型表所有结果 $flights = App\Flight::all(...$flight = App\Flight::where('active', 1)->first(); // 通过传递主键数组来调用 find 方法, 这将会返回匹配记录集合 $flights = App...null $user->account()->dissociate(); $user->save(); 附加 / 分离多对多关联模型 $user = App\User::find(1); // 在连接模型中间表插入记录...]); // 从中间表移除相应记录: 指定用户移除某个角色 $user->roles()->detach($roleId); // 从中间表移除相应记录: 指定用户移除所有角色 $user->...例如, 你可能想要使用 Laravel 加密器对存储在数据库数据进行加密, 并且在 Eloquent 模型访问时自动进行解密.

    30300

    Laravel Eloquent 模型关联关系(下)

    从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载在每次查询动态属性时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以在开发过程如果想优化性能...,需要遍历获取作者信息,假设要循环 N 次的话,加上文章模型本身获取,总共需要进行 N + 1 次查询,而 PHP 对数据库连接是短连接,每次都要重新连接数据库,所以从性能角度考虑不建议使用这种方式...所以不管模型实例有多少个,关联结果只会查询一次,加上模型本身查询总共是两次查询,在列表查询时,大大减少了对数据库连接查询次数,因而有更好性能表现,推荐使用。...`deleted_at` is null order by `created_at` desc 懒惰渴求式加载 有时候,你可能觉得一次性加载所有关联数据有点浪费,对于特定条件下才使用数据我们可以通过动态条件判断进行渴求式加载或者延迟加载...author 属性时,就会返回如下默认空对象了: 该特性其实应用了设计模式空对象模式,好处是在代码里可以为不同情况编写一致性代码。

    19.5K30

    Laravel 模型操作中一次奇妙踩坑经历

    最近被 Laravel 模型一些小问题折腾死去活来,明明看着很清晰很明了代码,却偏偏不能实现功能,现在带大家来切身经历一下这次奇妙踩坑经历,代码看似很多,实则不多,大家别急着跑,哈哈。...返回结果是修改了.... 这就尴尬了,难道是对象集合非对象属性不能这样赋值?也不对呀,思来想去决定对对象本身做一个探索,直接在 map 打印 $userTask : ?...还记得我们刚才测试打印时候 toArray ,就是他把对象集合转变成了一个数组,我们来看一下: ?...大公告成,可以说很优雅,哈哈,大家可能会问,你这直接返回了没有调用 toArray 啊,数据是怎么合并怎么转换?...特别鸣谢: zIym 同学[1] (咱俩一起跨坑,哈哈) 结束语 其实吧最初我也没有想这么多,想了很多其它解决办法,但是都是治根不治本,到头来发现自己对 Laravel 模型工作原理还是不熟悉,只存在简单应用上面

    1.6K30

    Laravel关联模型过滤结果为空结果集(has和with区别)

    ["updated_at"]= NULL ["coupon"]= NULL // 注意返回了coupons为空数据 } 记录中有的coupon有记录,有的为空。...`deleted_at` is null 如果第二条为空,主记录关联字段就是NULL。...后来看到了Laravel关联模型has()方法,has()是基于存在关联查询,下面我们用whereHas()(一样作用,只是更高级,方便写条件) 这里我们思想是把判断有没有优惠券数据也放在第一次查询逻辑...`deleted_at` is null) and (`status` = 1 and `user_id` = 1) 这里实际上是用exists()筛选存在记录。...总结 以上所述是小编给大家介绍Laravel关联模型过滤结果为空结果集(has和with区别),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

    3.4K40

    3分钟短文:Laravel Carbon自定义日期时间格式

    引言 laravel引用了强大Carbon日期时间处理库用于日期时间操作, 并且在数据库格式化中使用该库。本文就说一说程序如何方便地使用 Carbon自定义格式。...', 'deleted_at' => 'datetime:Y-m-d h:i:s' ]; 那么读写数据都会使用Carbon代用该格式化字符串,对数据进行统一格式。...或者在laravel5使用 $dates 属性,功效与上面的方式相同: protected $dates = ['created_at', 'updated_at'] 读取时候,该字段都会返回一个null...接着使用Carbon对象 format 方法,返回自定义格式就可以了。...在模板打印默认格式日期时间字符串,可以这样使用: {{$user->created_at->toFormattedDateString()}} 写在最后 本文介绍了laravel模型 $casts

    3.5K20

    Laravel创建数据库表结构例子

    Laravel Schema门面提供了与数据库系统无关创建和操纵表支持,在 Laravel 所支持所有数据库系统中提供一致、优雅、平滑API。...::hasColumn('users', 'email')) { // } 连接&存储引擎 如果你想要在一个数据库连接上执行表结构操作,该数据库连接并不是默认数据库连接使用connection方法:...类型 $table- softDeletes(); 新增一个 deleted_at 列 用于软删除....默认情况下,Laravel 自动分配适当名称给索引——简单连接表名、列名和索引类型。...外键约束和索引使用同样命名规则——连接表名、外键名然后加上“_foreign”后缀: $table- dropForeign(‘posts_user_id_foreign'); 或者,你还可以传递在删除时会自动使用基于惯例约束名数值数组

    5.6K21

    Laravel5+mycat 报错 “Packets out of order”

    背景 近期对负责项目,配置了一套 主从复制 MySQL 集群 使用了中间件 mycat 但测试发现,替换了原来数据连接后,会出现 Packets out of order 报错 同时注意到,...有的框架代码竟然也会失效,比如 controller 类,获取 $request->all() 竟然变空了 分析、排查 首先,切换 mycat 后,程序报错一段源码如下: [2024-07-04...`deleted_at` is null order by `id` desc) at D:\\phpstudy_pro\\WWW\\projzqb1b\\vendor\\laravel\\framework...max_allowed_packet 参数 但是,发现不应该是这个问题,毕竟不使用 mycat 时不会出现问题 继续查找发现,这个问题原因很可能是数据库配置参数 【预处理】问题 设置 database.php... options 预处理可以解决报错 (但是查询出来数据全部转为了字符串) 因为上述变动,代码判断,可能会出现问题,尤其是一些 数字类型 === 比对 希望得到结果:同时满足

    12910

    手把手,带你从零封装Gin框架(四):数据库初始化(GORM)

    前言 许多框架都会引入 ORM 模型来表示模型类和数据库表映射关系,这一篇将使用 gorm[1] 作为 ORM 库,它遵循了 ActiveRecord(模型与数据库表一一对应) 模式,并且提供了强大功能...数据库名称 username: root # 用户名 password: root # 密码 charset: utf8mb4 # 编码格式 max_idle_conns: 10 # 空闲连接池中连接最大数量...log_filename: sql.log # 日志文件名称 自定义 Logger(使用文件记录日志) gorm 有一个默认 logger[3] ,由于日志内容是输出到控制台,我们需要自定义一个写入器...,将默认logger.Writer 接口实现切换为自定义写入器,上一篇引入了 lumberjack ,将继续使用它。...:"password" gorm:"not null;default:'';comment:用户密码"` Timestamps SoftDeletes } 在 bootstrap/db.go

    1.5K20

    Gorm实战,轻松掌握数据库增删改查技巧!

    ) // 返回插入记录条数 1.2 用指定字段创建记录 创建记录并更新给出字段。...`deleted_at` IS NULL fmt.Println(result.RowsAffected) // 返回找到记录计数,等于“len(student)” fmt.Println(result.Error...`deleted_at` IS NULL 若要在查询条件包含零值,可以使用map,该映射将包含所有键值作为查询条件,例如: // 如果想要在查询包含0字段,可以使用map来做 db.Where...`deleted_at` IS NULL // 可以看到Name字段不会更新,这是合理,因为如果零值字段也更新,Student表好多数据都会被更新为空 6.1 使用sql.NullString更新...`deleted_at` IS NULL 个人感觉还是用指针比较好,在平时Go开发,遇事不决就用指针,没毛病.

    3K20

    Laravel5.7 数据库操作迁移实现方法

    在这两个方法你都要用到 Laravel Schema 构建器来创建和修改表,要了解更多 Schema 构建器提供方法,查看其文档。下面让我们先看看创建 flights 表简单示例: <?...::hasColumn('users', 'email')) { // } 数据库连接 & 表选项 如果你想要在一个数据库连接上执行表结构操作,而该数据库连接并不是默认数据库连接,可以使用 connection...’); 等同于 YEAR 类型列 列修改器 除了上面列出数据列类型之外,在添加列时候还可以使用一些其它列“修改器”,例如,要使列允许为 NULL,可以使用 nullable 方法: Schema...– first() 将该列置为表第一个列 (MySQL) – nullable($value = true) 允许该列值为 NULL – storedAs($expression) 创建一个存储生成列...默认情况下,Laravel 自动分配适当名称给索引 —— 连接表名、列名和索引类型。

    3.8K31
    领券