如何为枚举值赋予别名?

时间:2017-07-17 07:09:34

标签: laravel laravel-5

有没有办法为枚举值赋予别名?例如,我在users表中使用名为“status”的列,其枚举数据类型的值为“0,1”。 “0”值表示用户为“活动”,“1”值表示用户为“已暂停”。 我在这样的

中显示刀片模板中的数据
{{$user->status}}

上面的代码将返回实际值“0”或“1”。如果状态为“0”,那么是否需要制作别名,那么数据将显示为“活动”而不是“0”?

5 个答案:

答案 0 :(得分:1)

您可以使用Accessors

为名为User的{​​{1}}模型添加方法:

getStatusAttribute()

或者,如果您想保留原始状态属性并创建新属性,则可以执行以下操作:

public function getStatusAttribute($status)
{
    return $status ? 'Suspended' : 'Active';
}

这将用作:

public function getStatusLabelAttribute()
{
    return $this->status ? 'Suspended' : 'Active';
}

希望这有帮助!

答案 1 :(得分:0)

有很多方法可以实现这一目标。

实现此目的的一个简单(但硬编码方式)是在您的Eloquent类上创建accessor,如下所示:

public function getStatus()
{
    $statuses = [
        0 => 'Active',
        1 => '....'
    ];


    return $statuses[$this->status];
}

{{ $user->getStatus() }}

答案 2 :(得分:0)

您可以在用户模型上执行:

添加"有效"属性:

protected $appends = ["active"]

然后创建一个获取属性的方法:

public function getActiveAttribute(){
    if($this->status) {
        return 'Active';
    }
    return 'Suspended';
}

然后在您的视图中,您可以访问如下属性:

{{$user->active}}

答案 3 :(得分:0)

要做到这一点:

{{$user->status === 0 ? 'Active' : 'not-active?'}}

答案 4 :(得分:0)

您可以使用三元运算符来解决此问题, 例如:

ArrayList<String> urlList = getIntent().getStringArrayListExtra("intent_key");