diff options
-rw-r--r-- | idiorm.php | 7 | ||||
-rw-r--r-- | test/QueryBuilderTest.php | 6 |
2 files changed, 12 insertions, 1 deletions
@@ -936,7 +936,12 @@ protected function _add_simple_condition($type, $column_name, $separator, $value) { // Add the table name in case of ambiguous columns if (count($this->_join_sources) > 0 && strpos($column_name, '.') === false) { - $column_name = "{$this->_table_name}.{$column_name}"; + $table = $this->_table_name; + if (!is_null($this->_table_alias)) { + $table = $this->_table_alias; + } + + $column_name = "{$table}.{$column_name}"; } $column_name = $this->_quote_identifier($column_name); return $this->_add_condition($type, "{$column_name} {$separator} ?", $value); diff --git a/test/QueryBuilderTest.php b/test/QueryBuilderTest.php index bd888c0..a6e275b 100644 --- a/test/QueryBuilderTest.php +++ b/test/QueryBuilderTest.php @@ -373,6 +373,12 @@ class QueryBuilderTest extends PHPUnit_Framework_TestCase { $this->assertEquals($expected, ORM::get_last_query()); } + public function testJonWithAliasesAndWhere() { + ORM::for_table('widget')->table_alias('w')->join('widget_handle', array('wh.widget_id', '=', 'w.id'), 'wh')->where_equal('id', 1)->find_many(); + $expected = "SELECT * FROM `widget` `w` JOIN `widget_handle` `wh` ON `wh`.`widget_id` = `w`.`id` WHERE `w`.`id` = '1'"; + $this->assertEquals($expected, ORM::get_last_query()); + } + public function testJoinWithStringConstraint() { ORM::for_table('widget')->join('widget_handle', "widget_handle.widget_id = widget.id")->find_many(); $expected = "SELECT * FROM `widget` JOIN `widget_handle` ON widget_handle.widget_id = widget.id"; |