Laravel Api - 格式化字段的最佳方法

时间:2017-09-18 15:31:04

标签: php laravel

通常我使用整数作为状态,类型等字段......

示例:1 =有效,2 =已取消

但是我总是找到将这些数据格式化为字符串的地方,用于POST和GET请求。

不得不在客户端做到这一点,我认为这不是一个好方法。

所以我想到了使用Accessors和Mutators。

按照我的方式进行操作

public function getStatusAttribute($value)
{
    switch ($value) {
        case 1:
            return 'Active';
            break;
        case 2:
            return 'Canceled';
            break;
    }
}

public function setStatusAttribute($value)
{
    switch ($value) {
        case 'Active':
            return $this->attributes['status'] = 1;
            break;
        case 'Canceled':
            return $this->attributes['status'] = 2;
            break;
    }
}

我想知道这是否是最佳方法,因为我必须在每个模型中执行此操作。或者你有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以这样做。将记录存储在数据库中,就像0或1或2一样,当从数据库访问它时,使用laravel的访问器根据值将其转换为字符串常量。这样就不需要手动处理每个控制器功能中的这个数字常量。当你从任何你想要的控制器访问该字段时,访问器功能将为你做到这一点。这将提高代码的清晰度。

答案 1 :(得分:0)

解决方案:

public function getStatusAttribute($value)
{
    foreach ($this->status as $key => $item) {
        if ($item == $value) {
            return $key;
        }
    }
}

public function setStatusAttribute($value)
{
    foreach ($this->status as $key => $item) {
        if ($key == $value) {
            return $this->attributes['status'] = $item;
        }
    }
}