lib/Relationship.php
public function constructInnerJoinSql(Table $fromTable, $usingThrough=false, $alias=null)
	{
		if ($usingThrough)
		{
			$joinTable = $fromTable;
			$joinTableName = $fromTable->getFullyQualifiedTableName();
			$fromTableName = Table::load($this->className)->getFullyQualifiedTableName();
 		}
		else
		{
			$joinTable = Table::load($this->className);
			$joinTableName = $joinTable->getFullyQualifiedTableName();
			$fromTableName = $fromTable->getFullyQualifiedTableName();
		}

		// need to flip the logic when the key is on the other table
		if ($this instanceof HasMany || $this instanceof HasOne)
		{
			$this->setKeys($fromTable->class->getName());

			if ($usingThrough)
			{
				$foreignKey = $this->primaryKey[0];
				$joinPrimaryKey = $this->foreignKey[0];
			}
			else
			{
				$joinPrimaryKey = $this->foreignKey[0];
				$foreignKey = $this->primaryKey[0];
			}
		}
		else
		{
			$foreignKey = $this->foreignKey[0];
			$joinPrimaryKey = $this->primaryKey[0];
		}

		if (!is_null($alias))
		{
			$aliasedJoinTableName = $alias = $this->getTable()->conn->quoteName($alias);
			$alias .= ' ';
		}
		else
			$aliasedJoinTableName = $joinTableName;

		return "INNER JOIN $joinTableName {$alias}ON($fromTableName.$foreignKey = $aliasedJoinTableName.$joinPrimaryKey)";
	}
public function constructInnerJoinSql(Table $fromTable, $usingThrough=false, $alias=null)
	{
		if ($usingThrough)
		{
			$joinTable = $fromTable;
			$joinTableName = $fromTable->getFullyQualifiedTableName();
			$fromTableName = Table::load($this->className)->getFullyQualifiedTableName();
 		}
		else
		{
			$joinTable = Table::load($this->className);
			$joinTableName = $joinTable->getFullyQualifiedTableName();
			$fromTableName = $fromTable->getFullyQualifiedTableName();
		}

		// need to flip the logic when the key is on the other table
		if ($this instanceof HasMany || $this instanceof HasOne)
		{
			$this->setKeys($fromTable->class->getName());

			if ($usingThrough)
			{
				$foreignKey = $this->primaryKey[0];
				$joinPrimaryKey = $this->foreignKey[0];
			}
			else
			{
				$joinPrimaryKey = $this->foreignKey[0];
				$foreignKey = $this->primaryKey[0];
			}
		}
		else
		{
			$foreignKey = $this->foreignKey[0];
			$joinPrimaryKey = $this->primaryKey[0];
		}

		if (!is_null($alias))
		{
			$aliasedJoinTableName = $alias = $this->getTable()->conn->quoteName($alias);
			$alias .= ' ';
		}
		else
			$aliasedJoinTableName = $joinTableName;

		return "INNER JOIN $joinTableName {$alias}ON($fromTableName.$foreignKey = $aliasedJoinTableName.$joinPrimaryKey)";
	}
public function constructInnerJoinSql ( Table $ fromTable , $ usingThrough = false , $ alias = null ) { if ( $ usingThrough ) { $ joinTable = $ fromTable ; $ joinTableName = $ fromTable -> getFullyQualifiedTableName ( ) ; $ fromTableName = Table :: load ( $ this -> className ) -> getFullyQualifiedTableName ( ) ; } else { $ joinTable = Table :: load ( $ this -> className ) ; $ joinTableName = $ joinTable -> getFullyQualifiedTableName ( ) ; $ fromTableName = $ fromTable -> getFullyQualifiedTableName ( ) ; } // need to flip the logic when the key is on the other table if ( $ this instanceof HasMany || $ this instanceof HasOne ) { $ this -> setKeys ( $ fromTable -> class -> getName ( ) ) ; if ( $ usingThrough ) { $ foreignKey = $ this -> primaryKey [ 0 ] ; $ joinPrimaryKey = $ this -> foreignKey [ 0 ] ; } else { $ joinPrimaryKey = $ this -> foreignKey [ 0 ] ; $ foreignKey = $ this -> primaryKey [ 0 ] ; } } else { $ foreignKey = $ this -> foreignKey [ 0 ] ; $ joinPrimaryKey = $ this -> primaryKey [ 0 ] ; } if ( ! is_null ( $ alias ) ) { $ aliasedJoinTableName = $ alias = $ this -> getTable ( ) -> conn -> quoteName ( $ alias ) ; $ alias .= ' ' ; } else $ aliasedJoinTableName = $ joinTableName ; return "INNER JOIN $joinTableName {$alias}ON($fromTableName.$foreignKey = $aliasedJoinTableName.$joinPrimaryKey)" ; }
Creates INNER JOIN SQL for associations.

@param Table $from_table the table used for the FROM SQL statement
@param bool $using_through is this a THROUGH relationship?
@param string $alias a table alias for when a table is being joined twice
@return string SQL INNER JOIN fragment
Creates INNER JOIN SQL for associations .