zl程序教程

您现在的位置是:首页 >  其他

当前栏目

TP6.0 模型的关联删除

2023-02-19 12:20:09 时间

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