1010
1111namespace NilPortugues \Sql \QueryBuilder \Manipulation ;
1212
13- use NilPortugues \Sql \QueryBuilder \Syntax \SyntaxFactory ;
1413use NilPortugues \Sql \QueryBuilder \Syntax \Where ;
14+ use NilPortugues \Sql \QueryBuilder \Syntax \Column ;
15+ use NilPortugues \Sql \QueryBuilder \Syntax \SyntaxFactory ;
1516
1617/**
1718 * Class JoinQuery.
@@ -70,8 +71,8 @@ public function setTable($table)
7071
7172 /**
7273 * @param string $table
73- * @param string $selfColumn
74- * @param string $refColumn
74+ * @param mixed $selfColumn
75+ * @param mixed $refColumn
7576 * @param string[] $columns
7677 *
7778 * @return Select
@@ -83,8 +84,8 @@ public function leftJoin($table, $selfColumn = null, $refColumn = null, $columns
8384
8485 /**
8586 * @param string $table
86- * @param string $selfColumn
87- * @param string $refColumn
87+ * @param mixed $selfColumn
88+ * @param mixed $refColumn
8889 * @param string[] $columns
8990 * @param string $joinType
9091 *
@@ -110,8 +111,8 @@ public function join(
110111
111112 /**
112113 * @param Select $select
113- * @param string $selfColumn
114- * @param string $refColumn
114+ * @param mixed $selfColumn
115+ * @param mixed $refColumn
115116 *
116117 * @return Select
117118 */
@@ -121,11 +122,15 @@ public function addJoin(Select $select, $selfColumn, $refColumn)
121122 $ table = $ select ->getTable ()->getName ();
122123
123124 if (!isset ($ this ->joins [$ table ])) {
124- $ newColumn = array ($ selfColumn );
125- $ select ->joinCondition ()->equals (
126- $ refColumn ,
127- SyntaxFactory::createColumn ($ newColumn , $ this ->select ->getTable ())
128- );
125+ if (!$ selfColumn instanceof Column) {
126+ $ newColumn = array ($ selfColumn );
127+ $ selfColumn = SyntaxFactory::createColumn (
128+ $ newColumn ,
129+ $ this ->select ->getTable ()
130+ );
131+ }
132+
133+ $ select ->joinCondition ()->equals ($ refColumn , $ selfColumn );
129134 $ this ->joins [$ table ] = $ select ;
130135 }
131136
@@ -148,8 +153,8 @@ public function setJoin($isJoin = true)
148153
149154 /**
150155 * @param string $table
151- * @param string $selfColumn
152- * @param string $refColumn
156+ * @param mixed $selfColumn
157+ * @param mixed $refColumn
153158 * @param string[] $columns
154159 *
155160 * @internal param null $selectClass
@@ -163,8 +168,8 @@ public function rightJoin($table, $selfColumn = null, $refColumn = null, $column
163168
164169 /**
165170 * @param string $table
166- * @param string $selfColumn
167- * @param string $refColumn
171+ * @param mixed $selfColumn
172+ * @param mixed $refColumn
168173 * @param string[] $columns
169174 *
170175 * @return Select
@@ -176,8 +181,8 @@ public function crossJoin($table, $selfColumn = null, $refColumn = null, $column
176181
177182 /**
178183 * @param string $table
179- * @param string $selfColumn
180- * @param string $refColumn
184+ * @param mixed $selfColumn
185+ * @param mixed $refColumn
181186 * @param string[] $columns
182187 *
183188 * @return Select
0 commit comments