在模型中有" status",
"状态"具有以下状态:["待定","成功","关闭"],
但在数据库中是数字化的。
如何处理与状态相对应的模型和编号?
就像:" 0"是成功," 1"是"关闭" ....
答案 0 :(得分:1)
您可以使用模型getter / setter来执行此操作。这是一个粗略的实现,您可以在其中打开提供的值,但您可能希望将其弹出到一个静态的键/值数组中,以便更好地在两者之间进行映射。
public function getStatusAttribute($value)
{
switch ($value) {
case 0:
return 'Success';
case 1:
return 'Closed';
}
}
public function setStatusAttribute($value)
{
switch ($value) {
case 'Success':
return $this->attributes['status'] = 0;
case 'Closed':
return $this->attributes['status'] = 1;
}
}
编辑:供参考,以下是如何使用静态数组将映射保存在一个地方。
class Model
{
static $statuses = ['Success', 'Closed'];
public function getStatusAttribute($value)
{
return static::$statuses[$value];
}
public function setStatusAttribute($value)
{
$this->attributes['status'] = array_search($value, static::$statuses);
}
}
答案 1 :(得分:0)
我使用const变量。
例如:
const STATUS_PERFECT = -1;
const STATUS_WAIT = 0;
const STATUS_PASS = 1;
const STATUS_REJECTED = 2;
public static function ListStatus(){
return [
self::STATUS_PERFECT => 'perfect',
self::STATUS_WAIT => 'wait',
self::STATUS_PASS => 'passing',
self::STATUS_REJECTED => 'rejected',
];
}
public function getStatusNameAttribute()
{
$list = self::ListStatus();
return isset($list[$this->status]) ? $list[$this->status] : $this->status;
}