Laravel 5.2 - 在创建时自动包含全局范围

时间:2016-04-20 15:39:33

标签: laravel eloquent laravel-5.2

因此,我在大多数模型上都有一个全局范围,基本上只返回record_status为1的项目。此全局范围的实现与其实现中的软删除全局范围非常相似。

不幸的是数据库没有默认为1(并且我不允许更改它)所以我试图找到一种方法来使用这个相同的全局范围来默认创建/保存调用,如果尚未定义,则使record_status = 1。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您只需在模型中设置$attributes属性:

class Records extends Eloquent
{
    protected $attributes = ['record_status' => 1];
}

这样,您的属性将始终在record_status设置为1的情况下进行初始化。

答案 1 :(得分:1)

如果你有其他模型继承的基础模型,那么你可以添加它:

protected $attributes = ['record_status' => 1];

如果您有更多需要状态为1的模型而不是需要为0的模型,那么只有那些遵循该列默认零值的模型才会添加:

protected $attributes = ['record_status' => 0];

这样你不需要更新50多个模型,因为默认值= 1,而只有“例外”会用0覆盖它。