Skip to content

Commit 81da918

Browse files
Add limit method:
Add limit method to limit output records.
1 parent a82f4b8 commit 81da918

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/Database/PDOQueryBuilder.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class PDOQueryBuilder
1212
private array $values;
1313
private string $operator;
1414
private array $order;
15+
private int $limit;
1516

1617
private static $pdo;
1718
private static $table;
@@ -119,7 +120,12 @@ public function get(array $columns = ['*']): array
119120
$order = " ORDER BY {$orderColumn} {$sort}";
120121
}
121122

122-
$sql = "SELECT {$columns} FROM " . self::$table . "{$conditions}{$order}";
123+
$limit = '';
124+
if (isset($this->limit)) {
125+
$limit = " LIMIT {$this->limit}";
126+
}
127+
128+
$sql = "SELECT {$columns} FROM " . self::$table . "{$conditions}{$order}{$limit}";
123129
$stmt = self::$pdo->prepare($sql);
124130
$stmt->execute($this->values ?? []);
125131

@@ -153,6 +159,13 @@ public function orderBy(string $column, string $sort = 'ASC'): self
153159
return $this;
154160
}
155161

162+
public function limit(int $limit): self
163+
{
164+
$this->limit = $limit;
165+
166+
return $this;
167+
}
168+
156169
public static function truncateAllTable(): void
157170
{
158171
$stmt = self::$pdo->prepare("SHOW TABLES");

tests/Unit/PDOQueryBuilderTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,17 @@ public function testItCanGetOrderdData(): void
152152
$this->assertEquals('Zend', $result[0]->skill); // First row
153153
}
154154

155+
public function testItCanLimitData(): void
156+
{
157+
$this->multipleInsertIntoDb(10);
158+
159+
$result = PDOQueryBuilder::table('users')
160+
->limit(5)
161+
->get();
162+
163+
$this->assertCount(5, $result);
164+
}
165+
155166
private function insertIntoDb(array $data = []): int
156167
{
157168
$data = array_merge([

0 commit comments

Comments
 (0)