میلاد هدایت پور
4 سال پیش توسط میلاد هدایت پور مطرح شد
2 پاسخ

مشکل توی کوئری گرفتن لاراول

من همچین کدی دارم:

$users = User::with('customerManagements')
  ->whereHas('customerManagements', function ($q) use ($type, $cmt_status, $from, $to) {
            $q->latest('id')
                 ->where('status', "0")
                   ;
               })
            ->where('primary_id', 0)
            ->whereIn('status', $status)
            ->whereDate('created_at', '>=', $from)
             ->whereDate('created_at', '<=', $to)
               ->get();

که باید customerManagements های هر یوزر رو برگردونه
مشکل اینجاست که شرط ->where('status', "0") و اونایی که status = 1 هستن رو هم برمیگردونه برای همه کاربرا!!!!
خود کوئری رو نگاه کردم اینطوریه
توضیح تصویر رو وارد کنید

که تو عکس زده user_id هایی که جز (1و4) هستن!!!! کجای کد من همچین چیزی رو گفته و چجوری درستش کنم؟؟؟
سوال دومم اینه که چجوری میتونم هر یوزر رو به اون function بفرستم؟؟؟


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

شما رابطه customerManagements رو ایگرلود کردی و سپس داخل whereHas ازش استفاده کردی
این باعث میشه فقط کاربرایی برگردند که این شرط در موردشون صدق میکنه
احتمالا همین نکته باعث میشه اون قسمت (۱و۴) به کوئری اضافه بشه


بعد شما ۲ جا status رو چک کردی..

  • آیا status رو هم توی َUser داری و هم customerManagements ؟
  • دقیقا کجا سعی داری اون status رو چک کنی؟

در ضمن

  • به نظرم متد latest رو هم باید به خارج از کلوژر whereHas منتقل کنی
  • به جای ۲ تا whereDate هم میتونی از ۱ دونه whereBetween استفاده کنی
  • متغیر هایی هم که برای کلوژر whereHas ازشون استفاده (use) کردی جایی داخل اون کلوژر استفاده نشده اند.. نبودشون هم نباید تفاوتی داشته باشه

میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 4 سال پیش مطرح شد
0

@ali.bayat سلام مرسی از پاسخ کاملتون
راجب قسمت اول میشه کدشو بگید که درستش چجوریه؟
قسمت دوم: بله 2 تا status دارم هم برای یوزر و هم برای customerManagements
قسمت سوم: میخوام فقط اخرین customerManagements عه هر کاربر رو بررسی کنم که شرط هارو داشته باشه واسه همین latest رو تو whereHas گذاشتم
درباره اون متغیر ها هم ازشون استفاده میشه ولی چون الان مشکل روی status بود پاکشون کردم که تست کنم
اگه بهم بگید که کدو چجوری تغییر بدم که مشکله آوردن همه یوزر ها حل بشه ممنون میشم


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

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