EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

Laravel投稿サイト構築.82 -いいね機能の実装.2(コントローラ作成)-

前回はイイネ機能実装のための準備。

テーブルの作成とモデルの作成。

 

目次

 

モデル関数追加

イイネした際に、likesテーブルにデータ追加する。

イイネ解除した際に、likesテーブルからデータを削除する。

-----

// isLikeを使って、既にlikeしたか確認したあと、いいねする(重複させない)
public function like($thread_id)
{
  if($this->isLike($thread_id)){
    //もし既に「いいね」していたら何もしない
  } else {
    $this->likes()->attach($thread_id);
  }
}

//isLikeを使って、既にlikeしたか確認して、もししていたら解除する
public function unlike($thread_id)
{
  if($this->isLike($thread_id)){
    //もし既に「いいね」していたら消す
    $this->likes()->detach($thread_id);
  }
}

-----

 

コントローラー作成

イイネの情報操作のためのコントローラ作成

-----

php artisan make:controller LikeController

-----

イイネ登録関数と削除関数追加

-----

public function store_theme($thread_id)
{
  $md_theme = new Thead();
  $md_theme->like($thread_id);
  return 'ok!';
}

public function destroy_theme($thread_id)
{
  $md_theme = new Thead();
  $md_theme->unlike($thread_id);
  return 'ok!';
}

 

ルーティング追記

web.phpにイイネ用のルーティングを追記する。

-----

Route::post('/like_theme/{thread_id}',[LikeController::class,'store_theme']);
Route::post('/unlike_theme/{thread_id}',[LikeController::class,'destroy_theme']);

-----

 

今日はここまで

 

次回はボタンの追加、イイネの動作を実装していく予定

 

つづく