/** * Поиск записей, удовлетворяющих указаным свойствам объекта * * @param array $params массив параметров для уточнения области поиска записей * <pre> * select - список поле для выборки, по умолчанию * (все поля) * where - условие WHERE для выборки * order - название поля и направление сортировки результата, пример - " id DESC ", либо "id DESC, title ASC" * offset - смещение для выборки результата, по умолчанию - 0 * limit - лимит выборки для результата, по молчанию - 0, т.е. ВСЕ записи * key - название ключевого поля, для использования в качестве ключа ассоциативного массива результатов. По умолчанию использует ключевое поле модели. key=>FALSE если необходимо сделать простой массив ( 0=>array(),1=>array() ) * <pre> * * @return array ассоциативный массив результата поиска */ public function find_all(array $params = array()) { $def_param = array('select' => '*'); $params += $def_param; $fmtsql = "SELECT {$params['select']} FROM {$this->_tbl} WHERE %s"; $fmtsql .= isset($params['order']) ? ' ORDER BY ' . $params['order'] : ''; $tmp = array(); if (isset($params['where'])) { $tmp[] = $params['where']; } foreach (get_object_vars($this) as $k => $v) { if (is_array($v) or is_object($v) or $k[0] == '_' or empty($v)) { continue; } $v = strval($v); if ($v == '') { $val = "''"; } else { $val = $this->_db->get_quoted($v); } $tmp[] = $this->_db->get_name_quote($k) . '=' . $val; } $tmp = count($tmp) > 0 ? $tmp : array('true'); $offset = isset($params['offset']) ? (int) $params['offset'] : 0; $limit = isset($params['limit']) ? (int) $params['limit'] : 0; $tbl_key = isset($params['key']) ? $params['key'] : $this->_tbl_key; return $this->_db->set_query(sprintf($fmtsql, implode(' AND ', $tmp)), $offset, $limit)->load_object_list($tbl_key); }