[TOC] #### 1. 关联删除 ---- 模型的关联删除是经常使用的模型特性之一 适用场景举例: 1、在删除文章的同时删除下面的评论 2、 删除用户的同时删除用户的多条评论和多条操作日志 #### 2. User 模型定义 ---- 一个用户对应多条评论和多条操作日志,并且在用户模型已经定义模型关联方法 ``` /** * 一对多关联 用户对应多个评论 * * @return \think\model\relation\hasMany */ public function comments() { return $this->hasMany(Comment::class, 'user_id', 'id'); } /** * 一对多关联 用户对应多个操作日志 * * @return \think\model\relation\hasMany */ public function logs() { return $this->hasMany(Log::class, 'user_id', 'id'); } ``` #### 3. 关联删除使用示例 ---- 删除一个用户及其发布的评论、操作日志 ``` $user_id = 1; $data = User::with(['comments', 'logs'])->findOrEmpty($user_id); $bool = $data->together(['comments', 'logs'])->delete(); ``` 删除多个用户及其发布的评论、操作日志 ``` $data = User::with(['comments', 'logs'])->select(); foreach ($data as $model) { $model->together(['comments', 'logs'])->delete(); } ``` #### 4. 特别注意 ---- 查询时必须使用 `with` 关联预载入,否则 `together` 关联删除无效