예제 #1
0
	/**
	 * Returns the query as an SQL string
	 * 
	 * @return string
	 */
	public function generate(Atomik_Db_Query $query)
	{
		$this->_query = $query;
		$this->_info = $query->getInfo();
		
		$sql = '';
		
		switch($this->_info['statement']) {
			case 'SELECT':
				$sql = $this->_buildSelectStatement();
				break;
			case 'INSERT':
				$sql = $this->_buildInsertStatement();
				break;
			case 'UPDATE':
				$sql = $this->_buildUpdateStatement();
				break;
			case 'DELETE':
				$sql = $this->_buildDeleteStatement();
				break;
		}
		
		return trim($sql);
	}
예제 #2
0
	/**
	 * Query the adapter
	 * 
	 * @param	Atomik_Db_Query	$query
	 * @return 	Atomik_Model_Modelset
	 */
	public function query(Atomik_Db_Query $query)
	{
		if ($query->getInfo('statement') != 'SELECT') {
			require_once 'Atomik/Model/Manager/Exception.php';
			throw new Atomik_Model_Manager_Exception('Only SELECT queries can be used with Atomik_Model_Manager');
		}
		$builder = self::getBuilderFromQuery($query);
		
		$this->_notify($builder, 'BeforeQuery', array($query));
		
		if (($result = $this->_dbInstance->query($query)) === false) {
			return new Atomik_Model_Modelset($builder, array());
		}
		
		$result->setFetchMode(PDO::FETCH_ASSOC);
		$modelSet = new Atomik_Model_Modelset($builder, $result);
		
		$this->_notify($builder, 'AfterQuery', array($modelSet));
		
		return $modelSet;
	}