Попытка создать массив, смешанный с данными из разных таблиц mysql - PullRequest
1 голос
/ 14 октября 2019

В основном у меня есть несколько таблиц в MySql, и я пытаюсь создать массив, смешанный с данными из разных таблиц. Я использую AJAX для получения данных из CFC. Я пытался использовать разные запросы ajax для получения данных из разных таблиц, но это делает мой код очень длинным.

Таблица первого примера - user_info_tb


USER_ID | FULL_NAME | 

----------------------------------------

  2             Jack

  3             John

  4             Jamie

Таблица второго примера -post_tb


POST_ID | POSTED BY (USER_ID FROM THE FIRST TABLE)        |  TEXT |

----------------------------------------------------------------------------

  1              2                                            Hi

  2              3                                           Hello

  3              4                                         Good Morning

как мне создать двумерный массив, чтобы получить что-то вроде этого

[0]

 [1]-[Jack]

 [2]-[Hi]

[1]

 [1]-[John]

 [2]-[Hello]

[2]

 [1]-[Jamie]

 [2]-[Good Morning]

1 Ответ

2 голосов
/ 14 октября 2019

Звучит так, как будто вы пишете ajax-запрос и запрос для каждой таблицы. Скорее всего, вы хотите создать запрос на соединение и один ajax-запрос.

<cffunction name="getUserPosts">
    <cfargument name="userID" required="true" />
    <cfquery name="local.result" datasource="#dsn#">
        SELECT u.User_ID, u.FullName, p.Post_ID, p.Text
        FROM user_info_tb u
            INNER JOIN post_tb p ON u.UserID = p.Posted_By
        WHERE u.User_ID = <cfqueryparam value="#arguments.userID#" />
    </cfquery>

    <cfreturn result />
</cffunction>

В зависимости от ваших потребностей и версии CF, вы можете просто сериализовать

<cfoutput>#serializeJson(getUserPosts(form.userID))#</cfoutput>

или создать массив как вы. скажи под вопросом ...

<cfset result = getUserPosts(form.userID) />
<cfset resultArray = [] />
<cfloop query="#result#">
    <cfset arrayAppend(resultArray, [result.FullName, result.Text]) />
</cfloop>
<cfoutput>#serializeJson(resultArray)#</cfoutput>
...