Построение и массив массивов из результата запроса с <cfloop> - PullRequest
1 голос
/ 24 марта 2012

В моей базе данных проектов MySQL есть записи с несколькими логическими флагами, которые помогают мне сортировать данные. У меня есть 3 категории planning, landscape и environmental и 4 класса (или подкатегории) для каждой категории; industrial, government, education, residential.

Моя цель - использовать ColdFusion для создания и хранения чисел project_id в каком-либо массиве, который в основном будет сортировать проекты по категориям и классам. Таким образом, я могу взять только промышленные проекты в категории планирования и создать ссылку на этот проект.

Итак, первая позиция в массиве будет planning, а внутри этой первой позиции будут 4 класса, тогда внутри них будут все project_id числа, которые вернули true для этих конкретных критериев.

Логика, которую я ищу, выглядит следующим образом ...

Цикл по результату запроса, если Planning = true и industrial = true, поместите id проекта в массив планирования внутри промышленного массива.

Как я могу использовать <cfloop>, чтобы перебрать список записей проекта, распознать флаги категорий и классов и создать чистый и пригодный для использования набор данных? Можно ли это как-то обрабатывать в запросе?

Ответы [ 2 ]

0 голосов
/ 01 июля 2012

Для этого вы можете использовать библиотеку Underscore.cfc .Например, вы можете использовать функцию фильтра для извлечения массива структур, представляющих нужные строки запроса:

planningArray = _.filter(queryResult, function(row){
    return (row.planning == true && row.industrial == true);
});
0 голосов
/ 24 марта 2012
  1. Определить желаемую структуру данных
  2. посмотрите на существующую структуру данных
  3. выяснить алгоритм перевода с одного на другое

Вы можете cfloop запросить и использовать большой cfswitch (или большой набор if-then-else), чтобы выяснить, как вы хотите сохранить идентификатор в желаемой структуре данных. Или, если вы можете сопоставить имя класса / категории как структурный ключ, тогда это может быть проще.

Или вы можете использовать cfoutput group="", если это поможет (cfloop group="" доступно в CF10 +)

Наконец, может быть, вам даже не нужна структура данных, просто используйте Query of Queries, где вам нужно.

...