我该如何输出相应的状态?

时间:2018-05-04 01:35:24

标签: laravel model

在模型中有" status",

"状态"具有以下状态:["待定","成功","关闭"],

但在数据库中是数字化的。

如何处理与状态相对应的模型和编号?

就像:" 0"是成功," 1"是"关闭" ....

2 个答案:

答案 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;
}