راکت
حل شده

یک کوئری پیچیده count گرفتن از جدولی که رابطه یک به چند داره

3 پاسخ

درود دوستان - من دو تا جدول دارم که با همدیگه رابطه های یک به چند دارند.
notification
notification_visit
حالا چطور میتونم تعداد جدول دوم(count) ( که n تا رکورد برای جدول اول توشه، منظور در رابطه) رو به عنوان یک ستون اضافه کنم توی کوئریم ؟
شرمنده اگه بد توضیح دادم.

$notification = Notification::
        where('base_type', 'expert')
            ->leftjoin('notification_visits', function ($q) {
            $q->on('notification_visits.notification_id', '=', 'notifications.id');
            $q->whereNull('notification_visits.deleted_at');
        });

این کوئریم میاد کل ستون های جدول دوم رو میاره توی هر رکورد، اما من میخام که

  • تمامی فیلدهای جدول اول رو داشته باشم.
    • از جدول دوم فقط یک فیلد داشته باشم به نام مثلا count که تعداد رکوردهای جدول دوم توشه؟
ثبت پرسش جدید

پاسخ‌ها

3
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

از متد withCount استفاده کن

$notification = Notification::withCount('notificationVisits')->get();

اینجا notificationVisits میشه نام رابطه hasMany ی که بین مدل ها داری

محسن مهری
محسن مهری
@mohsen.mehri.business2

تخصص: full stack developer php laravel javascript vuejs

@ali.bayat
درود آقای بیات ممنون از پاسختون،
این تابع یعنی میاد دقیقا به اسم جدولم یک فیلد اضافه میکنه که توش یک عدده درسته ؟

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بله دقیقا همین کار رو میکنه

شاید پاسخ شما همین‌جا باشد

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

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