在User-Model Laravel中更新布尔值

时间:2017-05-02 15:40:28

标签: php laravel model

我在更新用户模型中的字段时遇到问题。

我有一个字段用于激活定义为boolean的public_profile:

...
$table->boolean('public_profile')->default(false);
... 

在模型中我定义。

protected $fillable = [..., 'public_profile', ...];

现在我尝试通过axios更新字段,具体取决于复选框的状态。

$('#change_public_profile').change(function () {
    message={
       _token: $('meta[name="csrf-token"]').attr('content'),
       public_profile: $('#change_public_profile').is(':checked')
}
axios.post('SOME URL', message).....

现在在我的控制器中我读了请求:

$public_profile = $request->input('public_profile');

并调用函数:

Auth::user()->togglePublicProfile($public_profile);

在用户模型中,我有以下功能:

public function togglePublicProfile($toggleTo){
    $user = $this;
    $user->public_profile = $toggleTo;
    return $user->save();
}

我也尝试使用boolval()作为Mutator,但它从未改变过。 我也这样做,以便对一个字符串值进行处理,并且它运行良好。

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

由于你有boolean(true / false),你不需要得到任何输入($ toggleTo),因为你只有两个状态。每次调用此选项时,您都可以设置相反的值。

$this->public_profile = !$this->public_profile;
$this->save();