Laravel全球softdelete

时间:2015-01-27 09:03:19

标签: php laravel laravel-4

如何为所有模型启用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');
    }
}

2 个答案:

答案 0 :(得分:0)

如果我是你,我会使用基类。让你的所有模型扩展一个类,反过来,扩展Eloquent。然后,您可以将影响所有模型的任何内容放在基类中。

答案 1 :(得分:0)

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

class BaseModel extends Eloquent {
    use SoftDeletingTrait;

    protected $dates = ['deleted_at'];
}

然后让你的模型扩展该类

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

顺便说一句,list_items已经是传统的表名(snake_case和复数),因此您不必明确指定它。