Laravel 全局软删除

Laravel global softdelete

如何为我的所有模型启用 softDelete 而不必在每个模型中指定以下内容?:

use Illuminate\Database\Eloquent\SoftDeletingTrait;

class ListItem extends Eloquent
{
    use SoftDeletingTrait;

    protected $table = 'list_items';
    protected $dates = ['deleted_at'];

    public function product(){
        return $this->hasOne('Product');
    }
}

如果我是你,我会使用碱基 class。让您的所有模型都扩展 class,进而扩展 Eloquent。然后,您可以将影响所有模型的任何内容放入基础 class.

只需创建一个BaseModel class。这让您可以在多个模型之间共享所有类型的功能和配置:

class BaseModel extends Eloquent {
    use SoftDeletingTrait;

    protected $dates = ['deleted_at'];
}

然后让您的模型扩展 class

class ListItem extends BaseModel {
    public function product(){
        return $this->hasOne('Product');
    }
}

顺便说一下,list_items 已经是常规的 table 名称(snake_case 和复数),因此您不必明确指定它。