From 9fc37e9435165945273e1f961c7c8ca0a3b42bfc Mon Sep 17 00:00:00 2001 From: pushrbx Date: Wed, 17 Jan 2024 23:41:28 +0000 Subject: [PATCH 1/2] fixed #469 --- app/Repositories/DefaultAnimeRepository.php | 36 +++++++++++---------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/app/Repositories/DefaultAnimeRepository.php b/app/Repositories/DefaultAnimeRepository.php index 38bd4325..1ec01d43 100644 --- a/app/Repositories/DefaultAnimeRepository.php +++ b/app/Repositories/DefaultAnimeRepository.php @@ -120,32 +120,34 @@ public function getAiredBetween( ?string $premiered = null ): EloquentBuilder { -// $queryable = $this->queryable(true)->whereBetween("aired.from", [ -// $from->toAtomString(), -// $to->modify("last day of this month")->toAtomString() -// ]); - /** @noinspection PhpParamsInspection */ $queryable = $this->queryable(true); + $airedFilter = ["aired.from" => [ + '$gte' => $from->toAtomString(), + '$lte' => $to->modify("last day of this month")->toAtomString() + ]]; + + $finalFilter = []; + if ($premiered !== null) { - $queryable = $queryable - ->where("premiered", null) - ->orWhere("premiered", $premiered); + $finalFilter["$or"] = [ + ["premiered" => $premiered], + [ + "premiered" => null, + ...$airedFilter + ] + ]; + } else { + $finalFilter = array_merge($finalFilter, $airedFilter); } - $queryable = $queryable - ->whereRaw([ - "aired.from" => [ - '$gte' => $from->toAtomString(), - '$lte' => $to->modify("last day of this month")->toAtomString() - ] - ]); - if (!is_null($type)) { - $queryable = $queryable->where("type", $type->label); + $finalFilter["type"] = $type->label; } + $queryable = $queryable->whereRaw($finalFilter); + return $queryable->orderBy("members", "desc"); } From d8599fa6758394a5faa611c1ccfad3da000c99ac Mon Sep 17 00:00:00 2001 From: Irfan Date: Sun, 21 Jan 2024 00:22:39 +0500 Subject: [PATCH 2/2] "$or" throws a runtime exception for some reason... --- app/Repositories/DefaultAnimeRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Repositories/DefaultAnimeRepository.php b/app/Repositories/DefaultAnimeRepository.php index 1ec01d43..23a9806c 100644 --- a/app/Repositories/DefaultAnimeRepository.php +++ b/app/Repositories/DefaultAnimeRepository.php @@ -131,7 +131,7 @@ public function getAiredBetween( $finalFilter = []; if ($premiered !== null) { - $finalFilter["$or"] = [ + $finalFilter['$or'] = [ ["premiered" => $premiered], [ "premiered" => null,