Laravelを使用してフォロー機能を作成しています。
ログインしてるユーザーが他のユーザーをフォローしたり、フォローを外したりする機能をつくり、
ビュー側では@ifを使用し現状フォローしてるユーザーとしていないユーザーとでボタンの表示を切り替えるようにしました。
現在フォローボタンを押すとフォローすることができ、ボタンはフォロー解除の表示に切り替わるところまで完成したのですが
フォロー解除ボタンを押すと一度下記のようにエラーが表示され、
Object of class Illuminate\Routing\Redirector could not be converted to string
一度ページを前に戻りリダイレクトをするとフォローが外れボタンがフォローするボタンへと戻ります。
他のビューにも色々使用してるのでなるべく大きく修正をすることは避けたいのですが、うまく改善することができません。
unfollowのdetachが上手く機能してないように思えますがなにか原因が分かる方アドバイスお願い致します。
User.php
public function followings() { return $this->belongsToMany(User::class, 'follows', 'follow_id', 'follower_id'); } //このユーザーをフォローしてる人の取得 public function followers() { return $this->belongsToMany(User::class, 'follows', 'follower_id', 'follow_id'); } public function follow(Int $user_id) { return $this->followers()->attach($user_id); } public function unfollow(Int $user_id) { return $this->followers()->detach($user_id); } public function isFollowing(Int $user_id) { return (boolean) $this->followers()->where('follow_id', $user_id)->exists(); } public function isFollowed(Int $user_id) { return (boolean) $this->followings()->where('follower_id', $user_id)->exists(); } }
UserController
public
1 { 2 $follower = auth()->user(); 3 $is_following = $follower->isFollowing($user->id); 4 if(!$is_following) { 5 $follower->follow($user->id); 6 return back(); 7 } 8 } 9 // フォロー解除 10 public function unfollow(User $user) 11 { 12 $follower = auth()->user(); 13 $is_following = $follower->isFollowing($user->id); 14 if($is_following) { 15 $follower->unfollow($user->id); 16 17 return redirect(); 18 } 19} 20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。