在由属性访问器转换之前访问值

时间:2017-03-27 21:12:52

标签: laravel laravel-5

我的模型上有一个布尔列的访问器:

public function getActiveAttribute($value)
    {
        if ($value == 0) {
            return "No";
        } else {
            return "Yes";
        }
    }

我遇到的问题是相应的表单输入,单选按钮,当我转到创建或编辑视图时,没有选择任何选项。我可以修改表单,使单选按钮的值为“是”和“否”,然后为同一个字段写一个mutator。

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您很可能只想保留现有的active属性,这样您就可以访问原始值,但可以创建一个用于显示目的的访问器。

因此,将您的访问者重命名为getActiveYesNoAttribute(),然后您的布尔值将显示为active,而您的是/否将以active_yes_no的形式提供。

class User extends Model
{
    public function getActiveYesNoAttribute()
    {
        return $this->active ? "Yes" : "No";
    }
}

用法:

$user = \App\User::first();

dd($user->active, $user->active_yes_no);