راکت

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

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 بفرستم؟؟؟

ثبت پرسش جدید

پاسخ‌ها

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

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

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


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

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

در ضمن

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

تخصص: در حال پیشرفت

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

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

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

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