راکت

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

10 پاسخ

سلام دوستان من یه همچین کوئری دارم که بر اساس تاریخ گروه بندی میکنه از جدول 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]
ثبت پرسش جدید

پاسخ‌ها

10
Armin Rahmati
Armin Rahmati
@arminrahmati999

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

z.mehran
z.mehran
@zohremehran70

تخصص: برنامه نویس -طراح وب سایت

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

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

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

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

protected $with = ['sick'];
z.mehran
z.mehran
@zohremehran70

تخصص: برنامه نویس -طراح وب سایت

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

Armin Rahmati
Armin Rahmati
@arminrahmati999

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

z.mehran
z.mehran
@zohremehran70

تخصص: برنامه نویس -طراح وب سایت

برای مدل sick

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

برای مدل kefayat

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

@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
z.mehran
@zohremehran70

تخصص: برنامه نویس -طراح وب سایت

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

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

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

Armin Rahmati
Armin Rahmati
@arminrahmati999

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

->groupBy('data' , 'kefayat')
z.mehran
z.mehran
@zohremehran70

تخصص: برنامه نویس -طراح وب سایت

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

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

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