Skip to content

Commit f11edae

Browse files
committed
add testInsertObjectWithRawSql()
1 parent ad3e088 commit f11edae

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

system/Database/BaseBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2698,7 +2698,7 @@ protected function objectToArray($object)
26982698

26992699
foreach (get_object_vars($object) as $key => $val) {
27002700
// There are some built in keys we need to ignore for this conversion
2701-
if (((! is_object($val) || $val instanceof RawSql) && ! is_array($val) && $key !== '_parent_name')) {
2701+
if ((! is_object($val) || $val instanceof RawSql) && ! is_array($val) && $key !== '_parent_name') {
27022702
$array[$key] = $val;
27032703
}
27042704
}

tests/system/Database/Builder/InsertTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use CodeIgniter\Database\Exceptions\DatabaseException;
1515
use CodeIgniter\Database\Query;
16+
use CodeIgniter\Database\RawSql;
1617
use CodeIgniter\Test\CIUnitTestCase;
1718
use CodeIgniter\Test\Mock\MockConnection;
1819

@@ -85,6 +86,21 @@ public function testInsertObject()
8586
$this->assertSame($expectedBinds, $builder->getBinds());
8687
}
8788

89+
public function testInsertObjectWithRawSql()
90+
{
91+
$builder = $this->db->table('jobs');
92+
93+
$insertData = (object) [
94+
'id' => 1,
95+
'name' => new RawSql('CONCAT("id", \'Grocery Sales\')'),
96+
];
97+
$builder->testMode()->insert($insertData, true);
98+
99+
$expectedSQL = 'INSERT INTO "jobs" ("id", "name") VALUES (1, CONCAT("id", \'Grocery Sales\'))';
100+
101+
$this->assertSame($expectedSQL, str_replace("\n", ' ', $builder->getCompiledInsert()));
102+
}
103+
88104
/**
89105
* @see https://github.com/codeigniter4/CodeIgniter4/issues/5365
90106
*/

0 commit comments

Comments
 (0)