صدرا حکیم
4 سال پیش توسط صدرا حکیم مطرح شد
1 پاسخ

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

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

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

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

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

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


ثبت پرسش جدید
Seyyed Mojtaba Hoseyni
تخصص : برنامه نویس Laravel و ReactJS
@SMH118 4 سال پیش آپدیت شد
0

سلام دوست عزیز
متاسفانه فعلا متد 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 بهش نیازی نداشته باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام