Skip to content

Commit 5c6f468

Browse files
committed
fix: RawSql causes error when using like() and countAllResults()
1 parent ba75eed commit 5c6f468

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

system/Database/BaseBuilder.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3082,6 +3082,10 @@ protected function compileWhereHaving(string $qbKey): string
30823082
continue;
30833083
}
30843084

3085+
if ($qbkey instanceof RawSql) {
3086+
continue;
3087+
}
3088+
30853089
if ($qbkey['condition'] instanceof RawSql) {
30863090
$qbkey = $qbkey['condition'];
30873091

tests/system/Database/Live/LikeTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace CodeIgniter\Database\Live;
1313

14+
use CodeIgniter\Database\RawSql;
1415
use CodeIgniter\Test\CIUnitTestCase;
1516
use CodeIgniter\Test\DatabaseTestTrait;
1617
use Tests\Support\Database\Seeds\CITestSeeder;
@@ -121,4 +122,32 @@ public function testLikeSpacesOrTabs()
121122
$this->assertCount(1, $spaces);
122123
$this->assertCount(1, $tabs);
123124
}
125+
126+
/**
127+
* @see https://github.com/codeigniter4/CodeIgniter4/issues/7268
128+
*/
129+
public function testLikeRawSqlAndCountAllResultsAndGet()
130+
{
131+
$builder = $this->db->table('job');
132+
$builder->like(new RawSql('name'), 'Developer');
133+
$count = $builder->countAllResults(false);
134+
$results = $builder->get()->getResult();
135+
136+
$this->assertSame(1, $count);
137+
$this->assertSame('Developer', $results[0]->name);
138+
}
139+
140+
/**
141+
* @see https://github.com/codeigniter4/CodeIgniter4/issues/7268
142+
*/
143+
public function testLikeRawSqlAndGetAndCountAllResults()
144+
{
145+
$builder = $this->db->table('job');
146+
$builder->like(new RawSql('name'), 'Developer');
147+
$results = $builder->get(null, 0, false)->getResult();
148+
$count = $builder->countAllResults();
149+
150+
$this->assertSame(1, $count);
151+
$this->assertSame('Developer', $results[0]->name);
152+
}
124153
}

0 commit comments

Comments
 (0)