Exemple #1
0
 /**
  * @param \Engine\Mvc\Model\Query\Builder $queryBuilder
  * @param string $name
  * @param string $category
  * @param string $categoryName
  * @param string $where
  * @param string $emptyCategory
  * @param string $emptyItem
  * @param bool $multiselect
  * @param bool $fields
  * @param null $category_order
  * @return array
  */
 static function prepareOptions(\Engine\Mvc\Model\Query\Builder $queryBuilder, $name = null, $category = null, $categoryName = null, $where = null, $emptyCategory = "n/a", $emptyItem = "n/a", $multiselect = false, &$fields = false, $category_order = null)
 {
     if ($emptyCategory === null) {
         $emptyCategory = self::EMPTY_CATEGORY;
     }
     if ($emptyItem === null) {
         $emptyItem = self::EMPTY_ITEM;
     }
     $model = $queryBuilder->getModel();
     if (null !== $where) {
         if (!is_array($where)) {
             $where = [$where];
         }
         foreach ($where as $whereItem) {
             $queryBuilder->where($whereItem);
         }
     }
     if (null !== $name) {
         $queryBuilder->columnsId()->setColumn($name, 'name');
     } else {
         $queryBuilder->columnsId()->columnsName();
     }
     if ($category) {
         if (!is_array($category)) {
             $category = array($category);
         }
         foreach ($category as $i => $cat) {
             if ($i == 0) {
                 $queryBuilder->columnsJoinOne($cat, 'category');
                 if (null == $category_order) {
                     $queryBuilder->orderBy('category, name');
                 } else {
                     $queryBuilder->orderBy($category_order);
                 }
             } else {
                 $column = is_array($cat) ? end($cat) : $cat;
                 $queryBuilder->columnsJoinOne($cat, $column);
             }
         }
         $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']] = trim($item['name']) ? $item['name'] : $emptyItem;
         }
     } else {
         $queryBuilder->orderNatural();
         //$select->order('name');
         $data = ($result = $queryBuilder->getQuery()->execute()) === null ? [] : $result;
         $options = [];
         foreach ($data as $item) {
             if ($item['id'] === 0) {
                 continue;
             }
             $options[$item['id']] = trim($item['name']) ? $item['name'] : $emptyItem;
         }
         if ($multiselect) {
             //$options = [0 => $options];
         }
     }
     return $options;
 }