TP6.0 模型的关联删除
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
关联删除无效
本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!
从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!
本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。
本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。
若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。