Exemple #1
0
 /**
  * Поиск записей, удовлетворяющих указаным свойствам объекта
  *
  * @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);
 }