Beispiel #1
0
 /**
  * Комплексная функция для сложного запроса с сортировкой и фильтрацией
  * @param int $start номер первой записи (для постраничного чтения)
  * @param int $limit количество записей (для постраничного чтения)
  * @param bool $all если false, то только опубликованные
  * @param array $sort поле и направление сортировки array('field' => 'поле', 'dir' => 'направление')
  * @param array $filter массив фильтров, получается из url array(['field' => <название поля>, 'value' => <значение>], ...), можно посмотреть в контроллере node стр. 375 getFilter($f3, $path, $model) 
  * @param string $additional_confitions строка дополнительных условий, полученная, например, из классов сложных фильров или просто кусок запроса WHERE, который будет добавлен к основному условию через AND
  * @param bool $with_related_fields включать или не включать связанные по один-ко-многим поля (название и slug)
  * @return array результат запроса
  */
 public function getList($start = 0, $limit = 10, $all = true, $sort = null, $filter = null, $additional_conditions = null, $with_related_fields = true)
 {
     $params = array();
     $params[] = '';
     $query = new DBALQuery();
     $group_table = \models\UserGroup::getInstance()->getTable();
     $query->select($this->table . '.*, ' . $group_table . '.name as group_name')->from($this->table)->from($group_table)->conditions([$this->table . '.group_id = ' . $group_table . '.id'])->options(array('order' => [$this->table . '.id DESC']));
     if ($additional_conditions) {
         $query->conditions([$additional_conditions]);
     }
     $list = $query->paginate($start, $limit);
     $nodes = array('pos' => $list['pos'], 'count' => $list['count'], 'subset' => array());
     foreach ($list['subset'] as $k => $item) {
         $nodes['subset'][$k] = array_map('stripslashes', $item);
         $nodes['subset'][$k]['title'] = $this->toString($nodes['subset'][$k]);
     }
     $nodes['pages'] = $this->getPaginationPages($nodes['count'], $nodes['pos']);
     // \helpers\Debug::prePrintR($nodes);
     return $nodes;
 }
Beispiel #2
0
 /**
  * Комплексная функция для сложного запроса с сортировкой и фильтрацией
  * @param int $start номер первой записи (для постраничного чтения)
  * @param int $limit количество записей (для постраничного чтения)
  * @param bool $all если false, то только опубликованные
  * @param array $sort поле и направление сортировки array('field' => 'поле', 'dir' => 'направление')
  * @param array $filter массив фильтров, получается из url array(['field' => <название поля>, 'value' => <значение>], ...), можно посмотреть в контроллере node стр. 375 getFilter($f3, $path, $model) 
  * @param bool $with_related_fields включать или не включать связанные по один-ко-многим поля (название и slug)
  * @return array результат запроса
  */
 public function getList($start = 0, $limit = 10, $all = true, $sort = null, $filter = null, $with_related_fields = true)
 {
     $params = array();
     $params[] = '';
     $query = new DBALQuery();
     $query->select($this->table . '.*')->from($this->table);
     $list = $query->paginate($start, $limit);
     $nodes = array('pos' => $list['pos'], 'count' => $list['count'], 'subset' => array());
     foreach ($list['subset'] as $k => $item) {
         $nodes['subset'][$k] = array_map('stripslashes', $item);
     }
     $nodes['pages'] = $this->getPaginationPages($nodes['count'], $nodes['pos']);
     // \helpers\Debug::prePrintR($nodes);
     return $nodes;
 }