Skip to content

Commit

Permalink
Merge pull request #26 from alalavn/master
Browse files Browse the repository at this point in the history
Add "is null" and "is not null" to IteratorSqlFormatter
  • Loading branch information
byjg authored Dec 31, 2024
2 parents b0b7974 + 072b0f4 commit cbab5d2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/IteratorFilterSqlFormatter.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ public function getRelation(string $name, Relation $relation, mixed $value, arra
}
return " $name NOT IN ($placeholders) ";
},
Relation::IS_NULL => function (&$param, $name, $paramName, $value) {
return " $name IS NULL ";
},
Relation::IS_NOT_NULL => function (&$param, $name, $paramName, $value) {
return " $name IS NOT NULL ";
},
};

return $data($param, $name, $paramName, $value); }
Expand Down
34 changes: 34 additions & 0 deletions tests/IteratorFilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,40 @@ public function testAddRelationOr()
$this->assertEquals('select * from tablename where field = :field or field2 = :field2 ', $sql);
}

public function testRelationIsNull()
{
$this->object->and('field', Relation::IS_NULL, null);

$params = [];
$returnFields = '*';
$sql = $this->object->format(
new IteratorFilterSqlFormatter(),
'tablename',
$params,
$returnFields
);

$this->assertEquals([], $params);
$this->assertEquals('select * from tablename where field IS NULL ', $sql);
}

public function testRelationIsNotNull()
{
$this->object->and('field', Relation::IS_NOT_NULL, null);

$params = [];
$returnFields = '*';
$sql = $this->object->format(
new IteratorFilterSqlFormatter(),
'tablename',
$params,
$returnFields
);

$this->assertEquals([], $params);
$this->assertEquals('select * from tablename where field IS NOT NULL ', $sql);
}

public function testGroup()
{
$this->object->startGroup();
Expand Down

0 comments on commit cbab5d2

Please sign in to comment.