2017-01-30 17 views
1

私はいくつかのタスクを列挙したテーブルを用意しています。 「Completed」列を切り替えるボタンを追加しましたが、更新する行を選択できないようです。誰かが私が間違っているところを私に見せてもらえる?ブール値をボタンで切り替えるにはどうすればよいですか?

私はルート、ボタン、メソッドを作成しましたが、すべて動作するようですが、DBは更新されません(今のところ、 "completed"カラムを1に変更するコードがあります)。

ルート:ビューで

Route::patch('tasks/complete/{id}', '[email protected]'); 
Route::resource('tasks' , 'TaskController'); 

ボタン:

{{ Form::open(array('action' => array('[email protected]', $task->id))) }} 
    {{ Form::hidden('_method', 'PATCH') }} 
    {{ Form::submit('Completed?', array('class' => 'btn btn-danger')) }} 
{{ Form::close() }} 

コントローラー:

public function updateCompleted($id) 
{ 

    $task = Task::findOrFail($id); 

    $task->completed == 1; 

    $task->update(); 

    Session::flash('message', 'Task updated!'); 
    return redirect('tasks'); 

} 

ありがとう!

+0

'パブリック関数updateCompleted($番号)...' '$ id'を返すようにしようと、私を与える正確 – Rashad

+0

$ id''返す返されたものを参照してください。

以下の作業コードです行の正しいid値です。ボタンをクリックしています。フラッシュメッセージが表示され、ページはリダイレクトされますが、 '$ task-> completed == 1; $ task-> update(); '何もしていないようです... – user3623348

+1

' update'の代わりに 'save'を書いてください – Rashad

答えて

0

@rashadが指摘したように、ではなく、completedの値を設定するには、=という単一の値を使用する必要がありました。

=割り当て演算子であり、割り当て又は値を設定TGOように使用されます。

==平等演算子であるので、に使用され、それらが同じであるかどうかを確認するために値を比較。

update()の代わりにsave()に電話する必要がありました。

public function updateCompleted($id) 
{ 

    $task = Task::findOrFail($id); 

    $task->completed = 1; 

    $task->save(); 

    Session::flash('message', 'Task updated!'); 
    return redirect('tasks'); 

} 
関連する問題