1

基本的に、MySql にはいくつかのテーブルがあり、異なるテーブルのデータが混在する配列を作成しようとしています。AJAX を使用して CFC からデータを取得しています。さまざまな ajax リクエストを使用してさまざまなテーブルからデータを取得しようとしましたが、コードが非常に長くなります。

最初のテーブル例 - user_info_tb


USER_ID | FULL_NAME | 

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

  2             Jack

  3             John

  4             Jamie

2 番目のテーブル例 - post_tb


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

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

  1              2                                            Hi

  2              3                                           Hello

  3              4                                         Good Morning

このようなものを取得するために 2 次元配列を作成するにはどうすればよいですか

[0]

 [1]-[Jack]

 [2]-[Hi]

[1]

 [1]-[John]

 [2]-[Hello]

[2]

 [1]-[Jamie]

 [2]-[Good Morning]
4

1 に答える 1

2

あなたがやっていることは、テーブルごとに ajax リクエストとクエリを書いているようです。あなたがやりたいことは、結合クエリと 1 つの 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>
于 2019-10-14T15:10:47.017 に答える