我如何在Laravel中设置将来的Soft Deleted

时间:2019-01-03 07:21:25

标签: php laravel

根据此问题:Is it possible to perform "future" soft delete in laravel? 可以在laravel 5.6中使用吗?并且,如果可以,我在哪里可以创建特征

我尝试在app \ Traits \中创建特征,但是当我在模型中调用时,总是说没有找到Trait'App \ Traits \ MySoftDeletingTrait'

我在app \ Traits中创建了2个文件 -MySoftDeletingScope.php

namespace App\Traits;

class MySoftDeletingScope extends Illuminate\Database\Eloquent\SoftDeletingScope {
    public function apply(Builder $builder)
    {
        $model = $builder->getModel();

        $builder->where($model->getQualifiedDeletedAtColumn(), '<=', Carbon::now());

        $this->extend($builder);
    }
}

the 2nd one MySoftDeleteingTrait.php

namespace App\Traits;

use Illuminate\Database\Eloquent\SoftDeletingTrait;

trait MySoftDeletingTrait {
    public static function bootSoftDeletingTrait()
    {
        static::addGlobalScope(new MySoftDeletingScope);
    }
}

在Uer php中,我打电话

使用App \ Traits \ MySoftDeletingTrait; 使用Notifiable,HasRoles,MySoftDeletingTrait;

1 个答案:

答案 0 :(得分:0)

您需要双重指定您使用的特征。首先,在文件开头的类定义之外包括:

use App\Traits\MySoftDeletingTrait;

,然后在课程内部:

use Notifiable, HasRoles, MySoftDeletingTrait;