تعداد نتایج حاصل از رابطه Many to Many

2 هفته پیش
توسط Seyyed Mojtaba Hoseyni آپدیت شد
صدرا حکیم ( 4030 تجربه )
2 هفته پیش
تخصص : Laravel Developer

سلام دوستان
توی روابط Many to Many میشه با شکل زیر مقادیری که با اون شی در رابطه هستند رو برگردونیم.

        $user->followings()->count()

ولی به نظرم راه بهتری هم باید وجود داشته باشه. چون اینجوری تمام اشیایی که رابطه دارند، لود میشن. یه متد withCount هست که همه اشیای مربوط به یه مدل رو برمیگردونه. ولی من نمیتونم ازش استفاده کنم. چون این شی $user که دارم، به طریق Route Model Binding فرستاده شده:

    public function index(User $user)
    {
        $user->followings()->count();
    }

و هر چی سعی کردم چیزی پیدا کنم که از طریق همون شی بشه به تعداد روابطی که داره دسترسی داشته باشم، پیدا نکردم
ممنون میشم راهنمایی کنید :)

Seyyed Mojtaba Hoseyni ( 5600 تجربه )
2 هفته پیش

سلام دوست عزیز
متاسفانه فعلا متد withCount رو نمیشه با route model binding استفاده کرد.
من 2 تا پیشنهاد دارم.
یکی این که از route model binding استفاده نکنید و کدتون به این شکل باشه:

public function index($user_id)
{
    $user= User::withCount('followings')->findOrFail($user_id); 
}

که بعدش میتونید با دستور زیر به تعداد مورد نظر دسترسی داشته باشید.

$user->followings_count;

و راه دوم استفاده از $withCount در مدل User هستش. به این شکل:

class User extends Model
{
    protected $withCount = ['followings'];
}

اگر از راه دوم برید، شما میتونید با route model binding هم ازش استفاده کنید. اما یک نکته ای هست و اونم اینه که همیشه در تمامی query های User، تعداد followings رو برمیگردونه حتی اگر در یک query بهش نیازی نداشته باشید.

برای ارسال پاسخ باید وارد سایت شوید