diff --git a/src/Repository.php b/src/Repository.php index 2615099..6d10df9 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -211,16 +211,17 @@ public function deleteByQuery(DeleteQuery $updatable): bool * @param bool $forUpdate * @return array */ - public function getByFilter(string|IteratorFilter $filter, array $params = [], bool $forUpdate = false, int $page = 0, ?int $limit = null): array + public function getByFilter(string|IteratorFilter $filter = "", array $params = [], bool $forUpdate = false, int $page = 0, ?int $limit = null): array { if ($filter instanceof IteratorFilter) { $formatter = new IteratorFilterSqlFormatter(); $filter = $formatter->getFilter($filter->getRawFilters(), $params); } - - $query = $this->getMapper()->getQuery() - ->where($filter, $params); + $query = $this->getMapper()->getQuery(); + if (!empty($filter)) { + $query->where($filter, $params); + } if ($forUpdate) { $query->forUpdate(); diff --git a/src/Trait/ActiveRecord.php b/src/Trait/ActiveRecord.php index 350f846..5733aeb 100644 --- a/src/Trait/ActiveRecord.php +++ b/src/Trait/ActiveRecord.php @@ -72,6 +72,8 @@ public static function get(mixed ...$pk) /** * @param IteratorFilter $filter + * @param int $page + * @param int $limit * @return static[] */ public static function filter(IteratorFilter $filter, int $page = 0, int $limit = 50): array @@ -79,6 +81,11 @@ public static function filter(IteratorFilter $filter, int $page = 0, int $limit return self::$repository->getByFilter($filter, page: $page, limit: $limit); } + public static function all(int $page = 0, int $limit = 50): array + { + return self::$repository->getByFilter(page: $page, limit: $limit); + } + public static function joinWith(string ...$tables): Query { $tables[] = self::$repository->getMapper()->getTable(); diff --git a/tests/RepositoryTest.php b/tests/RepositoryTest.php index 8a401f5..35c6d60 100644 --- a/tests/RepositoryTest.php +++ b/tests/RepositoryTest.php @@ -1470,6 +1470,24 @@ public function testActiveRecordFilter() $this->assertNull($model[1]->getDeletedAt()); // Because it was not set in the initial insert outside the ORM } + public function testActiveRecordEmptyFilter() + { + ActiveRecordModel::initialize($this->dbDriver); + + $model = ActiveRecordModel::filter(new IteratorFilter()); + + $this->assertCount(3, $model); + } + + public function testActiveRecordAll() + { + ActiveRecordModel::initialize($this->dbDriver); + + $model = ActiveRecordModel::all(); + + $this->assertCount(3, $model); + } + public function testActiveRecordNew() { ActiveRecordModel::initialize($this->dbDriver);