*前提
laravelでオリジナルアプリの製作をしていて、いいね機能の実装をしたいです。
・関連するテーブル
・userテーブル(ユーザー)
idカラム
nameカラム
・productテーブル(商品)
nameカラム
user_idカラム
・likeテーブル(いいね機能)
user_idカラム
proudct_idカラム
各テーブルの関係は以下のようになっています。
user.php
php
1public function products() 2 { 3 return $this->hasMany('App\Product'); 4 } 5 6 public function likes() 7 { 8 return $this->hasMany('App\Like'); 9 }
product.php
php
1public function user() 2 { 3 return $this->belongsTo('App\User'); 4 } 5 6 public function likes() 7 { 8 return $this->hasMany('App\Like'); 9 }
like.php
php
1public function user() 2 { 3 return $this->belongsTo('App\User'); 4 } 5 6 public function product() 7 { 8 return $this->belongsTo('App\Product'); 9 }
*実現したいこと
ログインしているユーザーが商品をいいねしているときは『いいねを解除する』、いいねしていないときは『いいねする』と表示させたいです。
*つまづいていること
『いいね済み』、『いいねする』の表示がうまくいかず、デフォルトが『いいねを解除する』になっています。
*該当するコード
blade.php
php
1@if($product->likes()->where('user_id', Auth::user()->id)) 2 <a href="{{ action('Admin\MercariController@release', ['id' => $product->id]) }}" class="btn btn-primary">いいねを解除する</a> 3 @else 4 <a href="{{ action('Admin\MercariController@like', ['id' => $product->id]) }}" class="btn btn-primary">いいねする</a> 5 @endif
controller.php
public function like(Request $request) { $like = new Like; $like->user_id = Auth::user()->id; $like->product_id = $request->id; $product = Product::find($request->id); $user = User::find($product->user_id); $like->save(); return view('admin.mercari.top'); }
以上です。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/27 04:26
2018/12/27 04:50