この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
先日の「ColdFusion ORMを試してみる」の記事で実際にORM_TEST1テーブルからEntityLoad()を使用してデータを取得したまではいいのですが、それを実際にHTMLページとして出力するにはどうしたらいいのか?とちょっと疑問に思ったので、備忘録としてまとめました。
そのままマニュアルを読んでいくとcfscript内での出力方法は掲載されていました。
参考までにcfscript内でどのように記述するかです。
<cfscript>
orm_sample = EntityLoad("ORM_TEST1");
testdata = orm_sample.getorm_test2();
WriteOutput("<b>" & orm_sample.getname() & " " & orm_sample.getdivision() & " " &
orm_sample.getphone() & "</b> has " & ArrayLen(orm_sample) & "<br>");
if (ArrayLen(testdata) > 0)
{
for(j = 1; j <= ArrayLen(testdata); j ++)
{
testdata = testdata[j];
WriteOutput(testdata.getcustomer_name() & "<br>");
}
}
</cfscript>
とWriteOutPutを使って出力することになります。
慣れるといいかもしれませんが、やはりCFLOOPタグ等を使って出力をしたいと思ってしまいます。
ということで、CFLOOPタグ等で利用する為にはEntityLoadで返されたデータを通常のquery形式に変換することで解決できます。
entityToQueryという便利な関数がありますので、それを使ってquery形式に変換します。
sample5.cfmは以下の通りになります。
<cfscript>
orm_test1 = EntityLoad("ORM_TEST1");
</cfscript>
<cfset orm_test1_convert = entityToQuery(orm_test1)>
<cfdump var="#orm_test1#"> <!--- EntityLoadで返ってきたArray --->
<cfdump var="#orm_test1_convert#"> <!--- entityToQueryでquery形式に変換したデータセット --->
<p>
<table border="1">
<tr>
<td>
ID
</td>
<td>
名前
</td>
<td>
部署
</td>
<td>
電話
</td>
</tr>
<cfoutput query="orm_test1_convert"> <!--- 通常のクエリ結果と同様に扱えます --->
<tr>
<td>
#orm_test1_convert.ID#
</td>
<td>
#orm_test1_convert.name#
</td>
<td>
#orm_test1_convert.division#
</td>
<td>
#orm_test1_convert.phone#
</td>
</tr>
</cfoutput>
</table>