前提・実現したいこと
laravel初心者です。Twitter風のアプリケーションを勉強していて、フォロー、フォロー解除の実装ができ
フォローしているユーザーの人数、フォローされいているユーザーの人数の表示をcountを使ってしようとしています。
発生している問題
実際にフォローはしていも"0"で表示されます。
該当ソースコード
FollowsController
php
1namespace App\Http\Controllers; 2 3use Illuminate\Http\Request; 4use Illuminate\Support\Facades\Auth; 5use Illuminate\Support\Facades\DB; 6use App\User; 7use App\Post; 8use App\Follow; 9 10class FollowsController extends Controller 11{ 12 13public function show(User $user, Follow $follow) 14 { 15 $login_user = auth()->user(); 16 $is_following = $login_user->isFollowing($user->id); 17 $is_followed = $login_user->isFollowed($user->id); 18 $follow_count = $follow->getFollowCount($user->id); 19 $follower_count = $follow->getFollowerCount($user->id); 20 21 return view('users.show', [ 22 'user' => $user, 23 'is_following' => $is_following, 24 'is_followed' => $is_followed, 25 'follow_count' => $follow_count, 26 'follower_count' => $follower_count 27 ]); 28 } 29}
Userモデル
php
1namespace App; 2 3use Illuminate\Notifications\Notifiable; 4use Illuminate\Foundation\Auth\User as Authenticatable; 5 6class User extends Authenticatable 7{ 8 use Notifiable; 9 10 /** 11 * The attributes that are mass assignable. 12 * 13 * @var array 14 */ 15 protected $fillable = [ 16 'username', 'mail', 'password', 17 ]; 18 19 /** 20 * The attributes that should be hidden for arrays. 21 * 22 * @var array 23 */ 24 protected $hidden = [ 25 'password', 'remember_token', 26 ]; 27 28 public function followers() 29 { 30 return $this->belongsToMany(User::class, 'follows', 'followed_id', 'following_id'); 31 } 32 33 public function follows() 34 { 35 return $this->belongsToMany(User::class, 'follows', 'following_id', 'followed_id'); 36 } 37 38 public function isFollowing($user_id) 39 { 40 return (boolean) $this->follows()->where('followed_id', $user_id)->exists(); 41 } 42 43 public function isFollowed($user_id) 44 { 45 return (boolean) $this->followers()->where('following_id', $user_id)->exists(); 46 } 47 48}
Followモデル
php
1namespace App; 2 3use Illuminate\Database\Eloquent\Model; 4 5class Follow extends Model 6{ 7 8 protected $primaryKey = [ 9 'following_id', 'followed_id' 10 ]; 11 12 protected $fillable = [ 13 'following_id', 'followed_id' 14 ]; 15 16 public function getFollowCount($user_id) 17 { 18 return $this->where('following_id', $user_id)->count(); 19 } 20 21 public function getFollowerCount($user_id) 22 { 23 return $this->where('followed_id', $user_id)->count(); 24 } 25 26}
Route
php
1Route::group(['middleware' => 'auth'], function() { 2Route::get('/show','FollowsController@show'); 3});
viewはフォロー数が{{ $follow_count }}
フォロワー数が{{ $follower_count }}で表示しております。
バージョン
laravel 5.5.48
php 7.4.5
homestead
また0で返ってくるということは該当するものに値が入っていないという認識で間違いないでしょうか?
ご教授の程よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 13:17
2020/10/12 12:30 編集
2020/10/12 13:41 編集
2020/10/12 14:00
2020/10/12 14:20
2020/10/12 14:44