2017-07-17 114 views
0

有没有办法给枚举值赋予别名?例如,我在具有值“0,1”的枚举数据类型的用户表中将此列称为“状态”。 “0”值表示用户处于“活动”状态,“1”表示用户处于“暂停”状态。 我显示在叶片模板中的数据这样如何给枚举值赋予别名?

{{$user->status}} 

上面的代码将返回真值,即“0”或“1”。如果状态为“0”,那么数据将显示为“活动”而不是“0”?

+0

Accessores会帮助你,看看[这里](https://laravel.com/docs/5.4/eloquent-mutators )。 – milo526

回答

0

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

一,简单(但硬编码的方式)来实现,这是对你的口才类中创建一个accessor,像这样:

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


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

{{ $user->getStatus() }}

+0

它很棒!谢谢 –

0

您可以在用户模式做到:

添加的 “活跃” 属性:

protected $appends = ["active"] 
public function getActiveAttribute(){ 
    if($this->status) { 
     return 'Active'; 
    } 
    return 'Suspended'; 
} 

然后对你的看法,你可以访问该属性是这样的::

{{$user->active}} 
0

只是为了做到这一点:

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

你然后对得到的属性创建方法可以使用Accessors

添加一个方法到你的User模式叫getStatusAttribute()

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

或者,如果你想保持原来的状态属性,并创建一个新的属性,你可以这样做:

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

这将用作:

$user->status; //0 or 1 
$user->status_label; //Active or Suspended 

H这有助于!

0

您可以使用三元运算符对于这个问题, 例如:

{{$user->status == 1 ? "Active" : "Suspended"}}