前提
PHP Laravelを使用しています。
違うモデルで定義したメソッド(App\Models\followerのpublic function getFollowCount()
等)がなぜか違うモデルで定義されていないと表示されます。リレーションかuse宣言のミスだ と思ったのですが、どこも間違えていないように見えます。
public function getFollowCount()
はApp\Models\followerで定義しました。それをapp/Http/Controllers/ProfileController.phpで使いたいと考えています。
実現したいこと
ProfileController.phpでpublic function getFollowCount()
を使いたい。
発生している問題・エラーメッセージ
Call to undefined method App\Models\User::getFollowCount()
該当のソースコード
User.php
1<?php 2 3namespace App\Models; 4 5// use Illuminate\Contracts\Auth\MustVerifyEmail; 6use Illuminate\Database\Eloquent\Factories\HasFactory; 7use Illuminate\Foundation\Auth\User as Authenticatable; 8use Illuminate\Notifications\Notifiable; 9use Laravel\Sanctum\HasApiTokens; 10 11class User extends Authenticatable 12{ 13 use HasApiTokens, HasFactory, Notifiable; 14 public function followers() 15 { 16 return $this->belongsToMany(User::class, 'followers', 'followed_id', 'following_id'); 17 } 18 public function follows() 19 { 20 return $this->belongsToMany(User::class, 'followers', 'following_id', 'followed_id'); 21}
Follower.php
1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7 8 9class Follower extends Model 10{ 11 use HasFactory; 12 13 public $timestamps = false; 14 public $incrementing = false; 15 public function getFollowCount($user_id) 16 { 17 return $this->where('following_id', $user_id)->count(); 18 } 19 public function getFollowerCount($user_id) 20 { 21 return $this->where('followed_id', $user_id)->count(); 22 } 23} 24
ProfileController.php
1<?php 2 3namespace App\Http\Controllers; 4 5use App\Models\User; 6use App\Models\Role; 7use App\Models\Follower; 8use Illuminate\Http\Request; 9use Illuminate\Support\Facades\Hash; 10use Illuminate\Validation\Rule; 11use Illuminate\Support\Facades\Storage; 12use Illuminate\Pagination\Paginator; 13 14class ProfileController extends Controller 15{ 16 public function followings(User $user, Follower $follower) 17 { 18 $follower = auth()->user(); 19 $follow_count = $follower->getFollowCount($user->id); 20 $follower_count = $follower->getFollowerCount($user->id); 21 return view('profile.myfollow', compact('user', 'is_following', 'is_followed', 'follow_count', 'follower_count')); 22 } 23}
試したこと
リレーションの確認。use宣言の確認。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。