2017-07-17 97 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"}}