所以我有2个型号的用户&员工。他们彼此之间有一对一的关系。
User.php' hasOne'员工 和 Staff.php' belongsTo'用户
当我软删除用户时我想要软删除员工条目,我已经实现了这个(完美地工作):
static::deleting(function ($user) {
$user->staff()->delete();
});
现在我想在恢复用户时恢复工作人员,因为我已尝试使用此功能(不工作):
static::restoring(function ($user) {
$user->staff()->restore();
});
但这不起作用。用户条目已删除,但工作人员条目仍保持软删除状态。
有人能帮助我理解我在这里做错了吗?
此外,这是完成此操作的最佳方法吗?或者还有其他方法可以做到吗?
PS:我使用的是Laravel 5.5
答案 0 :(得分:3)
它无效,因为$user->staff()
无法获取已删除的人员。这就是关系默认工作的方式。
只需将其替换为:
static::restoring(function ($user) {
$user->staff()->withTrashed()->restore();
});
答案 1 :(得分:1)
还原一批模型时永远不会触发“ static :: restoring”事件。
如果您正在执行以下操作:
Yourmodel::whereIn('id', [1,2,3])->restore();
它将恢复您的模型,但将永远不会触发“ static :: restoring or restore”,而是可以执行以下操作:
$models = Yourmodel::whereIn('id', [1,2,3])->get();
foreach($models as $model) {
$model->restore();
}