当前位置: 首页 > 知识库问答 >
问题:

laravel 4模型事件在softdelete上更新记录

祁远
2023-03-14

[帮助]我需要在删除记录时,它还会按值创建一个已删除的\u。

[公司表]
|名称|创建人|更新人|删除人|创建人|更新人|删除人|删除人|创建人|更新人|删除人||

public static function boot()
{

    static::creating(function($company)
    {
        $company->created_by = Auth::user()->id;
    });

}

这将在我们创建记录时使用用户id填充created by。

但是当我使用这个的时候删除记录(使用软删除)

public static function boot()
{
    parent::boot();

    static::deleting(function($company)
    {
        $company->deleted_by = Auth::user()->id;
    });

} 

此方法无效,按列删除的\u不更新。
删除记录时如何用用户id填写已删除的\u by?
谢谢

共有1个答案

唐信瑞
2023-03-14

目前,Laravel的delete()方法在创建相关的UPDATE查询时没有考虑其他属性更改。以下是来自Eloquent\Model::performDeleteOnModel()的一个片段:

$query = $this->newQuery()->where($this->getKeyName(), $this->getKey());

if ($this->softDelete)
{
    $this->{static::DELETED_AT} = $time = $this->freshTimestamp();

    $query->update(array(static::DELETED_AT => $this->fromDateTime($time)));
}
else
{
    $query->delete();
}

由于使用了newQuery(),因此在构建实际的数据库查询时,不会考虑对对象所做的任何更改。

您可以扩展模型类并添加自己的功能以接受任何更改的属性,或者您也可以简单地抛出$company-

 类似资料:
  • 1. 什么是事件模型? “百度分析云”基于“user-event”的数据模型。 您可以简单理解为两张大表,一张记录人的属性,一张记录人的行为。两张表通过唯一ID进行关联。 在event表,即事件表里,每一条用户行为就是一条记录。 2. 事件模型相比于传统PV模型的优势? 传统的流量分析工具会以“PV(页面浏览量)”为核心,去衡量产品的价值。而随着流量红利的消退,以及线上线下日趋融合,PV指标已经不

  • 监听函数 浏览器的事件模型,就是通过监听函数(listener)对事件做出反应。事件发生后,浏览器监听到了这个事件,就会执行对应的监听函数。这是事件驱动编程模式(event-driven)的主要编程方式。 JavaScript 有三种方法,可以为事件绑定监听函数。 HTML 的 on- 属性 HTML 语言允许在元素的属性中,直接定义某些事件的监听代码。 <body onload="doSomet

  • 模型事件实现 psr/event-dispatcher 接口,默认由 hyperf/event 组件提供功能支持。 运行事件 在 ORM 的运行期间,会对应触发以下事件,您可以进行对这些事件进行监听以满足您的需求。 事件 描述 Hyperf\Database\Events\QueryExecuted Query 语句执行后 Hyperf\Database\Events\StatementPrepa

  • 事件监听分两种,一种是仅限于对象的事件,另一种是静态方法触发的事件。 监听方式分两种:1、在类里写监听代码;2、定义监听类 批量操作的事件监听,一般建议用监听类方式。对象的事件监听根据习惯选择即可。 事件列表 模型对象事件 事件名 常量 描述 BeforeInsert ModelEvents::BEFORE_INSERT 插入前,insert()/save()触发 AfterInsert Mode

  • 模型事件 模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。 模型事件只在调用模型的方法生效,使用查询构造器操作是无效的 模型支持如下事件: 事件 描述 快捷方法 before_insert 新增前 beforeInsert after_insert 新增后 afterInsert before_update 更新前 beforeUpdate afte

  • 我现在迷路了。