mysql softdelete_Laravel - MySQL数据库的使用详解8(Eloquent ORM用法5:删除数据)

一、直接删除

1,通过模型对象删除

要删除一个模型,调用模型实例上的 delete方法即可。$user = User::find(6);

$user->delete();

2,通过查询删除模型

我们也可以通过查询来同时删除多个模型。User::where('id', '>', 3)->delete();

3,通过主键删除模型

如果我们知道模型的主键的话,可以使用 destroy方法直接删除,而不需先获取这个模型。User::destroy(1);

User::destroy([1, 2, 3]);

User::destroy(1, 2, 3);

二、软删除

软删除: 当模型被软删除后,它们并没有真的从数据库删除,而是在模型上设置一个 deleted_at 属性并插入数据库。如果模型有一个非空 deleted_at 值,那么表示该模型已经被软删除了。

1,启用软删除功能

(1)要启用软删除功能,我们首先需要加入deleted_at字段到数据库表,当模型使用软删除功能时会自动更新这个字段。

b14686a01bfd9fcdefe4b21f569add27.png

(2)然后在模型类里加入 SoftDeletes特性即可。<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model {

use SoftDeletes;

public $timestamps = false;

}

2,软删除测试

(1)下面我们使用 delete删除一个 id为 3 的模型数据。$user = User::find(3);

$user->delete();

2)删除后再次查询这条数据可以发现为null,说明已经删除。$user = User::find(3);

var_dump($user);

4a5c022d21864279f66438e59e37a796.png

(3)打开数据库可以看到,这条数据其实还是存在的,只不过deleted_at字段更新了个删除时间。

99bc8c4a3f4dfee01584eb4cdc46ef24.png

3,查询被软删除的数据

(1)普通查询方法只能查询到 deleted_at为 NULL的数据,如果想让已被软删除的模型数据出现在查询结果里,在查询时使用 withTrashed方法:$users = User::withTrashed()

->where('id', '>', 1)

->get();

(2)如果想只查询被软删除的模型数据,可以使用onlyTrashed方法:$users = User::onlyTrashed()

->where('id', '>', 1)

->get();

4,恢复被软删除的数据

(1)要把被软删除的模型数据恢复,使用restore方法。$user->restore();

(2)也可以结合查询语句使用restore方法:$users = User::withTrashed()

->where('id', '>', 1)

->restore();

5,彻底删除数据

如果想要真的从模型数据库删除,使用 forceDelete方法。$user = User::find(6);

$user->forceDelete();

6,判断数据是否被软删除

如果要确认模型是否被软删除了,可以使用 trashed方法。$user = User::withTrashed()->find(3);

if ($user->trashed()) {

echo "被软删除了";

}

Laravel - MySQL数据库的使用详解系列:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值