雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

TP6.0 模型的关联删除

2024-09-16 26

1. 关联删除2. User 模型定义3. 关联删除使用示例4. 特别注意

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 关联删除无效

更新于:2个月前
赞一波!

文章评论

评论问答