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

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

سلام

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

    $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();

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

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


ثبت پرسش جدید
mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 4 سال پیش مطرح شد
2

باید روی شرط ها لیمیت بزاری و نتایج رو باهم 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
@alimohammadzade662 4 سال پیش آپدیت شد
0

ممنون

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

‍‍


  $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();

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

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