ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### Db类实现 ~~~ Db::table('user') ->delete(1); ~~~ #### 模型类实现 ~~~ $user = User::get(1); $user->delete(); ~~~ #### 静态实现 ~~~ User::destroy(1); ~~~ delete方法没有任何参数,因此只能删除当前实例的模型数据,destroy方法支持删除指定主键或者查询条件的数据,例如: ~~~ // 根据主键删除多个数据 User::destroy([1, 2, 3]); ~~~ #### 使用闭包 ~~~ // 使用闭包条件 User::destroy(function ($query) { $query->where('id', '>', 0) ->where('status', 0); }); ~~~ #### 闭包使用外部参数 ~~~ /** * 顺序计算开服至今的留存率 * * 注意:将会删除开服至今的历史计算数据 * * @return void */ public function computeFromOpendate() { //获取Character、Llogin、Lregister表最新记录 // $this->updateToRecent(); //开服日期 '2017-11-24'; $opendate = '2017-12-25'; //闭包删除 $msg = Retention::destroy(function ($query) use ($opendate) { $query->where('date', '>=', $opendate); }); dump($msg); $this->computeInorderFrom($opendate); } ~~~ 早期版本的destroy方法如果传入空值,会删除数据表的所有数据,该问题已经在V5.0.9版本得到修正(不会执行任何删除)。 在模型的删除功能设计的时候,应该尽量用软删除替代实际的删除,一方面是为了避免数据丢失,一方面也是为了性能考虑(数据库的删除操作会导致重建索引,数据量越大影响越大),关于软删除的用法我们放到高级用法中描述。 #### 条件删除 使用数组进行条件删除,例如: ~~~ // 删除状态为0的数据 User::destroy(['status' => 0]); ~~~ #### 闭包删除 例如: ~~~ User::destroy(function($query){ $query->where('id','>',10); }); ~~~ #### 数据库类的查询条件删除 ~~~ User::where('id','>',10)->delete(); ~~~ 删除操作用法小结: |方法| 作用 | 返回值 | | --- | --- | --- | | delete | 删除当前数据 | 影响的记录数 | | destroy | 删除指定数据(静态) | 影响的记录数 |