[英]Laravel Model Restore Event
所以我有2个Models Users&Staff。 他们之间存在一对一的关系。
User.php'hasOne'Staff和Staff.php'belongsTo'用户
当我软删除用户时,我也想软删除人员条目,我已经使用(Perfectly)实现了这一点:
static::deleting(function ($user) {
$user->staff()->delete();
});
现在,当我尝试使用this(不工作)恢复用户时,我想恢复人员:
static::restoring(function ($user) {
$user->staff()->restore();
});
但这是行不通的。 用户条目已删除,但人员条目仍保持软删除状态。
有人可以帮我了解我在做什么错吗?
另外,这是完成此任务的最佳方法吗? 还是还有其他方法可以做到?
PS:我正在使用Laravel 5.5
它不起作用,因为$user->staff()
不会获取已删除的员工。 这就是默认情况下关系的工作方式。
只需将其替换为:
static::restoring(function ($user) {
$user->staff()->withTrashed()->restore();
});
恢复一批模型时,永远不会触发“ 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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.