コード例 #1
0
	public function modifySqlQuery()
	{
		//Joining tables by foreign key (one to many relation)
		if($this->options['select'])
		{	//There is no sense to join anything for overall data list if select fields of foreign table was not set
			$modifySql = array(
				'select' => array(),
				'join' => array(),
			);
			foreach($this->options['select'] as $fieldName=>$fieldAlias)
			{
				$modifySql['select'][] = "{$this->options['tableAlias']}.{$fieldName} AS {$fieldAlias}";
			}

			$modifySql['join']['table'] = "{$this->options['table']} AS {$this->options['tableAlias']}";
			if(!empty($this->options['dbName']))	//Foreign table is in another DB
				$modifySql['join']['table'] = "{$this->options['dbName']}.{$modifySql['join']['table']}";
			$modifySql['join']['type'] = $this->allowNull ? 'left' : 'inner';
			$modifySql['join']['conditions'] = array('AND', "{$this->tableName}.{$this->name} = {$this->options['tableAlias']}.{$this->options['pk']}");
			if(!empty($this->options['conditions']))
			{
				$conditions = $this->options['conditions'];
				AADb::addTableAliasToCond($conditions, $this->options['table'], $this->options['tableAlias']);
				$modifySql['join']['conditions'][] = $conditions;
				if(!empty($this->options['params']))
					$modifySql['join']['params'] = $this->options['params'];
			}
			return $modifySql;
		}
		return false;
	}