public function fetchByWhere($where = null, array $options = array())
	{
		$select = $this->sql->select();

		if ($where instanceof Where) {
			$select->where($where);
		} elseif (is_string($where) && !empty($where)) {
			$select->where($where);
		}

		// Options: limit
		$limit = array_key_exists('limit', $options) ? (int) $limit : null;

		if (!is_null($limit) && (int) $limit > 0) {
			$select->limit($limit);
		}

		$stmt = $this->sql->prepareStatementForSqlObject($select);
		$result = $stmt->execute();

		// Option: hydrate
		$hydrate = array_key_exists('hydrate', $options) ? (bool) $options['hydrate'] : true;

		if ($hydrate !== true) {
			return $result;
		}

		return $this->hydrateResult($result);
	}