2017-05-02 3 views
0

ユーザモデルのフィールドを更新する際に問題が発生しました。自身私が定義するモデルでユーザモデルLaravelでブール値を更新

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

は私がブール値として定義されpublic_profileを活性化するためのフィールドがあります。

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

ここで、チェックボックスのステータスに応じてaxiosでフィールドを更新しようとしています。

public function togglePublicProfile($toggleTo){ 
    $user = $this; 
    $user->public_profile = $toggleTo; 
    return $user->save(); 
} 
:私は機能を持っているユーザーモデルでは

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

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

そして関数を呼び出す:

$('#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)..... 

は今私のコントローラでは、私は、要求を読んで

私はまた、boolval()をMutator、buそれは決して変わらなかった。 私は文字列の値を変更するために同じことを行い、うまく動作します。

私の間違いはどこですか?

+0

適切な修正が見つからない場合は、BOOLEANではなくTINYINTを使用します。 Basiclly BOOLEANはTNIYINTの同義語です。http://stackoverflow.com/questions/289727/which-mysql-datatype-to-use-for-storing-boolean-values#289759「1」と「0」で完全にうまく機能するようになりました。あなたのコードで 'true/false'のようなブール値ではない – JustOnUnderMillions

+0

@JustOnUnderMillions Laravelの' $ table-> boolean() 'は' tinyint(1) 'に列を作成します。 – aynber

+0

togglePublicProfileにいくつかログインして、 '$ toggleTo'が何であるか、そして' $ user-> public_profile'が割り当ての前後にあるものを見てください。 – aynber

答えて

0

ブール値(true/false)を持つので、2つの状態しかないので、入力を取得する必要はありません($ toggleTo)。このオプションを呼び出すたびに、反対の値を設定できます。

関連する問題