Merge pull request #5464 from ytetsuro/fix/#5462/like-before-bug
Fixed issue #5462 Query Builder LIKE BEFORE doesnt work
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index 8bc6328..5c0528a 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -970,7 +970,7 @@
$v = "'{$v}'";
break;
case 'before':
- $v = "%'{$v}'";
+ $v = "'%{$v}'";
break;
case 'after':
$v = "'{$v}%'";
diff --git a/tests/codeigniter/database/query_builder/like_test.php b/tests/codeigniter/database/query_builder/like_test.php
index 3672afa..4d8673d 100644
--- a/tests/codeigniter/database/query_builder/like_test.php
+++ b/tests/codeigniter/database/query_builder/like_test.php
@@ -103,4 +103,27 @@
$this->assertCount(1, $tabs);
}
+ /**
+ * GitHub issue #5462
+ *
+ * @see ./mocks/schema/skeleton.php
+ *
+ * @dataProvider like_set_side_provider
+ */
+ public function test_like_set_side($str, $side, $expected_name)
+ {
+ $actual = $this->db->like('name', $str, $side)->get('job')->result_array();
+ $this->assertCount(1, $actual);
+ $this->assertEquals($expected_name, $actual[0]['name']);
+ }
+
+ public function like_set_side_provider()
+ {
+ return array(
+ array('Developer', 'none', 'Developer'),
+ array('tician', 'before', 'Politician'),
+ array('Accou', 'after', 'Accountant'),
+ array('usicia', 'both', 'Musician'),
+ );
+ }
}