繁体   English   中英

Laravel模型还原事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM