static function prepareOptionsAll(\Engine\Mvc\Model\Query\Builder $queryBuilder, $name = null, $category = null, $categoryName = null, $where = null, $emptyCategory = "n/a", $emptyItem = "n/a", $multiselect = false, &$fields = null, $category_order = null) { if ($emptyCategory === null) { $emptyCategory = self::EMPTY_CATEGORY; } if ($emptyItem === null) { $emptyItem = self::EMPTY_ITEM; } $model = $queryBuilder->getModel(); if ($where) { if (!is_array($where)) { $where = array($where); } foreach ($where as $whereItem) { $queryBuilder->where($whereItem); } } if (null !== $fields) { if (is_array($fields)) { foreach ($fields as $field => $value) { if (is_array($value)) { if (isset($value['case'])) { $case = self::selectCase($field, $value['case'], $queryBuilder->getAlias()); $queryBuilder->from(null, [$field . "_case" => $case]); unset($fields[$field]); $fields[$field . "_case"] = $value['title']; } } } } } if ($category) { $queryBuilder->columnsJoinOne($category, 'category'); if (null == $category_order) { $queryBuilder->orderBy(['category', 'name']); } else { $queryBuilder->orderBy($category_order); } $data = ($result = $queryBuilder->getQuery()->execute()) === null ? [] : $result; $options = []; foreach ($data as $item) { if ($item['id'] === 0) { continue; } $category = trim($item['category']) ? $item['category'] : $emptyCategory; $options[$category][$item['id']] = $item; } } else { $queryBuilder->orderNatural(); $queryBuilder->orderBy('name'); $data = ($result = $queryBuilder->getQuery()->execute()) === null ? [] : $result; $options = array(); foreach ($data as $item) { if ($item['id'] === 0) { continue; } $options[$category][$item['id']] = $item; } if ($multiselect) { //$options = [0 => $options]; } } return $options; }