如何使用访问器从二进制字段创建文本字段?

How can I use an accessor to create a text field from a binary field?

在 Laravel 5 中,我有一个名为 'microchip,' 的二进制字段,它是一个二进制字段。如果原始字段分别包含 1 或 0,我想构建一个输出 "yes," 或 "no," 的访问器函数。我有这个:

    public function getMicrochipTextAttribute($input)
    {
    switch($input)
    {
        case 0:
            return "No";
        break;
        case 1:
            return "Yes";
        break;
    }
}

不幸的是,当我使用 $model->microchip_text 时,无论 $input 的内容如何,​​它都会返回 "No,"。无论 $input 包含 1 还是 0,它都输出 "No."

原因是 Eloquent 不知道您正在使用什么 $input,因为您正在为新的 属性 而不是现有的访问器创建访问器.相反,试试这个:

public function getMicrochipTextAttribute()
{
    switch($this->attributes['microchip'])
    {
        case 0:
            return "No";
        break;
        case 1:
            return "Yes";
        break;
    }
}

或更短的版本:

public function getMicrochipTextAttribute()
{
    return $this->attributes['microchip'] ? 'Yes' : 'No';
}