z.mehran
4 سال پیش توسط z.mehran مطرح شد
10 پاسخ

استفاده از With در groupby لاراول

سلام دوستان من یه همچین کوئری دارم که بر اساس تاریخ گروه بندی میکنه از جدول kefayat . حالا میخوام از دستور with استفاده کنم برای این که بیمارانی که در این تاریخ ها هستند رو نامشون رو بیاره و null میزنه

Kefayat::selectRaw('count(*) as total , date')
            ->whereBetween('date', ['2016-03-20','2016-11-21'])
            ->whereBetween('kefayat',['1.2','2'])
             ->with('sick')
            ->groupBy('date')->get();![توضیح تصویر رو وارد کنید][1]

ثبت پرسش جدید
Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

سلام.
شما باید داخل مدل sick رابطه ای به اسم sick مشخص کنید تا نال برنگردونه.


z.mehran
تخصص : برنامه نویس -طراح وب سایت
@zohremehran70 4 سال پیش مطرح شد
0

میشه بیشتر توضیح بدین؟ relation بین sick و kefayat برقراره .از طرفی ام اگه selectRaw و groupBy نباشن اطلاعات sick رو میاره


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@zohremehran70
سلام.
پراپرتی with رو به خود مدل اضافه کنید.

protected $with = ['sick'];

z.mehran
تخصص : برنامه نویس -طراح وب سایت
@zohremehran70 4 سال پیش مطرح شد
0

به مدل sick? باز هم null برمیگردونه


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@zohremehran70
کدهای مدل sick و kefayat رو بفرستید


z.mehran
تخصص : برنامه نویس -طراح وب سایت
@zohremehran70 4 سال پیش مطرح شد
0

برای مدل sick

public function kefayat()
    {
        return $this->hasMany(Kefayat::class);
    }

برای مدل kefayat

public function sick()
    {
        return $this->belongsTo(Sick::class);
    }

Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@zohremehran70
اگر مطمئن هستید که چندی روابط رو درست تعریف کردین کدتون رو به این صورت بنویسید.

Kefayat::selectRaw('count(*) as total , date')
            ->whereBetween('date', ['2016-03-20','2016-11-21'])
            ->whereBetween('kefayat',['1.2','2'])
            ->groupBy('date')
             ->with('sick')
             ->get();

z.mehran
تخصص : برنامه نویس -طراح وب سایت
@zohremehran70 4 سال پیش مطرح شد
0

بله روابطم درسته چون وقتی به این صورت مینویسم اطلاعات کاربر رو بهم میده

Kefayat::with('sick')->get();

به این صورت هم null برمیگردونه


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

groupBy رو به این صورت هم بنویسید، نال برمیگردونه؟

->groupBy('data' , 'kefayat')

z.mehran
تخصص : برنامه نویس -طراح وب سایت
@zohremehran70 4 سال پیش مطرح شد
0

بله . فقط در صورتی null نمیشه که sick_id رو در selectRaw و groupBy بیارم که در این صورت گروه بندی بر اساس تاریخ دیگه معنایی پیدا نمیکنه


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

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