Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.05.2019 19:50:31

Как обьединить несколько where в одно условие ?

написал запрос такого вида:

$dataType = RateCriterion::query()
            ->join('LessonEventRateCriterionType as ct', 'LessonEventRateCriterion.id', '=', 'ct.LessonEventRateCriterionId')
            ->where('Active', 1)
            ->where('ct.CriterionType', '=', $lessonType)
            ->orWhere('ct.CriterionType', '=', UserLessonRateEnum::TYPE_ALL)
            ->orderBy('OrderIndex')
            ->get()
            ->toArray();

получается немного не то что хотелось,
как его можно переписать чтобы в where было два условия:

where('Active' = 1 and ct.CriterionType = $lessonType) or ('Active' = 1 and ct.CriterionType = UserLessonRateEnum::TYPE_ALL)

Не в сети

#2 20.05.2019 23:30:52

Re: Как обьединить несколько where в одно условие ?

->where(function ($query) use ($lessonType) {
                $query->where('Active', 1)
                      ->where('ct.CriterionType', $lessonType);
            })
->orWhere(function ($query) {
                $query->where('Active', 1)
                      ->where('ct.CriterionType', UserLessonRateEnum::TYPE_ALL);
            })

Попробуйте так.

->get()
->toArray();

Не самая лучшая идея. Нет лимита выборки и преобразование в array. Ситуационно конечно, но лучше избегать такой последовательности.

Изменено lodar (20.05.2019 23:31:19)

Не в сети

Подвал раздела