有没有办法给枚举值赋予别名?例如,我在具有值“0,1”的枚举数据类型的用户表中将此列称为“状态”。 “0”值表示用户处于“活动”状态,“1”表示用户处于“暂停”状态。 我显示在叶片模板中的数据这样如何给枚举值赋予别名?
{{$user->status}}
上面的代码将返回真值,即“0”或“1”。如果状态为“0”,那么数据将显示为“活动”而不是“0”?
有没有办法给枚举值赋予别名?例如,我在具有值“0,1”的枚举数据类型的用户表中将此列称为“状态”。 “0”值表示用户处于“活动”状态,“1”表示用户处于“暂停”状态。 我显示在叶片模板中的数据这样如何给枚举值赋予别名?
{{$user->status}}
上面的代码将返回真值,即“0”或“1”。如果状态为“0”,那么数据将显示为“活动”而不是“0”?
有很多方法可以实现这一点。
一,简单(但硬编码的方式)来实现,这是对你的口才类中创建一个accessor,像这样:
public function getStatus()
{
$statuses = [
0 => 'Active',
1 => '....'
];
return $statuses[$this->status];
}
{{ $user->getStatus() }}
它很棒!谢谢 –
您可以在用户模式做到:
添加的 “活跃” 属性:
protected $appends = ["active"]
public function getActiveAttribute(){
if($this->status) {
return 'Active';
}
return 'Suspended';
}
然后对你的看法,你可以访问该属性是这样的::
{{$user->active}}
只是为了做到这一点:
{{$user->status === 0 ? 'Active' : 'not-active?'}}
你然后对得到的属性创建方法可以使用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这有助于!
您可以使用三元运算符对于这个问题, 例如:
{{$user->status == 1 ? "Active" : "Suspended"}}
Accessores会帮助你,看看[这里](https://laravel.com/docs/5.4/eloquent-mutators )。 – milo526