diff --git a/cake/libs/model/datasources/dbo_source.php b/cake/libs/model/datasources/dbo_source.php index 1c45709ec..d657bfb84 100644 --- a/cake/libs/model/datasources/dbo_source.php +++ b/cake/libs/model/datasources/dbo_source.php @@ -1625,10 +1625,9 @@ class DboSource extends DataSource { for($i = 0; $i < $pregCount; $i++) { if(!empty($replace['1'][$i]) && !is_numeric($replace['1'][$i])) { - $conditions = preg_replace('/\b' . $replace['0'][$i] . '\b/', $this->name($replace['1'][$i]), $conditions); + $conditions = preg_replace('/\b' . preg_quote($replace['1'][$i]) . '\b/', $this->name($replace['1'][$i]), $conditions); } } - $conditions = rtrim($conditions); return $conditions; } return false; diff --git a/cake/tests/cases/libs/model/datasources/dbo_source.test.php b/cake/tests/cases/libs/model/datasources/dbo_source.test.php index 4f717daef..b8bf2ebcd 100644 --- a/cake/tests/cases/libs/model/datasources/dbo_source.test.php +++ b/cake/tests/cases/libs/model/datasources/dbo_source.test.php @@ -1314,6 +1314,10 @@ class DboSourceTest extends UnitTestCase { } function testStringConditionsParsing() { + $result = $this->db->conditions("ProjectBid.project_id = Project.id"); + $expected = " WHERE `ProjectBid`.`project_id` = `Project`.`id`"; + $this->assertEqual($result, $expected); + $result = $this->db->conditions("Candy.name LIKE 'a' AND HardCandy.name LIKE 'c'"); $expected = " WHERE `Candy`.`name` LIKE 'a' AND `HardCandy`.`name` LIKE 'c'"; $this->assertEqual($result, $expected);