راکت
حل شده

گزاشتن لیمیت رو where

2 پاسخ

سلام

من شرطی دارم به این صورت

    $data1 = DB::table('members_days')
            ->select('id')  ->orderBy('count', 'ASC')
            ->orWhere(function($query)
            {
                $query->where('gender', Members::GENDER_FEMALE)
                ->where('Monday', 'M');
            })->orWhere(function($query)
            {
                $query->where('gender', Members::GENDER_MALE)
                    ->where('Monday', 'M');
            })
            ->orWhere(function($query)
            {
                $query->where('gender', Members::GENDER_FEMALE)
                    ->where('Monday', 'E');
            })
            ->get();

میخوام حالتی بشه که بگم مثلا از شرط اولیه دوتا ممبر رو لیمیت کن و از شرط دومیه ۱ ممبر رو لیمیت کن و از شرط سومیه ۵ تا .
لیمیت میزارم جواب نمیده . و لیمیت رو کل هم نه و میخوام هر شرطی لیمیت خودش رو داشته باشه .

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

ثبت پرسش جدید

پاسخ‌ها

2
mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

بهترین پاسخ

باید روی شرط ها لیمیت بزاری و نتایج رو باهم union کنی. مثلا یه چیزی شبیه کد زیر

$b = Model::where('code', '=', $code)->where('col_b', '=' , 1)
->limit(3)
->union(
    Model::where('code', '=', $code)->where('col_a', '=' , 1)->limit(3);
)
->get();
ali mohammadzadeh
ali mohammadzadeh
@alimohammadzade662

ممنون

اینجوری حلش کردم .

‍‍


  $NFemaleMember = DB::table('members_days')
            ->select('id')
            ->where('gender', Members::GENDER_FEMALE)
            ->where($weekDay, 'N')
            ->orderBy('count', 'ASC')
            ->limit($NFemale);

        $NMaleMember = DB::table('members_days')
            ->select('id')
            ->where('gender', Members::GENDER_MALE)
            ->where($weekDay, 'N')
            ->orderBy('count', 'ASC')
            ->limit($NMale);

        $LFemaleMember = DB::table('members_days')
            ->select('id')
            ->where('gender', Members::GENDER_FEMALE)
            ->where($weekDay, 'L')
            ->orderBy('count', 'ASC')
            ->limit($LFemale);

        $LMaleMember = DB::table('members_days')
            ->select('id')
            ->where('gender', Members::GENDER_MALE)
            ->where($weekDay, 'L')
            ->orderBy('count', 'ASC')
            ->limit($LMale)
            ->unionAll($NFemaleMember)
            ->unionAll($NMaleMember)
            ->unionAll($LFemaleMember)->get();

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

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

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