はじめに
ポートフォリオ作成にあたって、記事を削除するための機能を作成した。
ただ削除する機能についてはいくつか方法があるので、それをまとめようと思う。
基本情報
まずControllerでの設定をします。掲示板なのでHome画面に記事を一覧で出力します。
細かいことは省きますが、articleメソッドでmemoテーブルからstatusが1のものを呼び出して出力する
$memo = Memo::where('status','1')->where('id',$id)->first();
ルーティング
Route::post('/delete/{id}', 'AccountController@delete')->name('delete');
削除機能その①
物理的に削除する(delete)
Modelで記事のidと一致したものをdelete()で削除する
※「削除しました」というメッセージが出力されるようにフラッシュメッセージで設定する
public function destroy($id)
{
Articles::where('id', $id)->delete();
return redirect('/')->with('success', '削除しました');
}
削除機能その②
論理機能削除
Column | Type | Option |
---|---|---|
status | integer | default = 1 |
削除ボタンを押すとstatusが1→2になる
Modelで以下のような設定をすると対象になる記事のstatusが2になる
もとの設定でstatus=1だけが出力されるようになるから、それ以外が出力されない
public function delete(Request $request , $id){
$inputs = $request->all();
Memo::where('id',$id)->update([ 'status' => 2 ]);
return redirect()->route('home')->with('flash-delete','削除しました');
}