laravel自定义软删除

只需要修改/vendor/laravel/framework/src/Illuminate/Databases/Eloquent/SoftDeletes.phprunSoftDelete方法,如下列代码所示

	/**
     * for 'data_status' changes to
     */
    protected $data_status = true;
	/**
     * Perform the actual delete query on this model instance.
     *
     * @return void
     */
    protected function runSoftDelete()
    {
        $query = $this->setKeysForSaveQuery($this->newModelQuery());

        $time = $this->freshTimestamp();

        $columns = [$this->getDeletedAtColumn() => $this->fromDateTime($time)];

        $this->{$this->getDeletedAtColumn()} = $time;

        if ($this->timestamps && ! is_null($this->getUpdatedAtColumn())) {
            $this->{$this->getUpdatedAtColumn()} = $time;

            $columns[$this->getUpdatedAtColumn()] = $this->fromDateTime($time);
        }

        $columns = $columns + (array)($this->data_status?['data_status' => '0']:[]);

        $query->update($columns);

        $this->syncOriginalAttributes(array_keys($columns));
    }

属性$data_status用来开启或关闭修改,在方法runSoftDelete中的变量$columns就是laravel软删除规定的字段修改,前提是当前数据表中必须要有这些字段;这里我的数据库软删除要修改数据库中data_status字段,所以我在变量$columns中拼接了['data_status' => '0']数组,如果想修改其它字段,可以选择在变量$columns中拼接,这样当你执行了软删除,这个方法就会被触发,调用update方法将变量$columns中的数据更新到数据库中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值