محسن مهری
3 سال پیش توسط محسن مهری مطرح شد
3 پاسخ

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

درود دوستان - من دو تا جدول دارم که با همدیگه رابطه های یک به چند دارند.
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 که تعداد رکوردهای جدول دوم توشه؟

ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
4

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

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

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


محسن مهری
تخصص : full stack developer php larav...
@mohsen.mehri.business2 3 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

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


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

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