DataTablesを使用したテーブル生成とサーバーサイド連携(5)
- 2022年3月17日
- 技術情報
DataTablesを使用したテーブル生成方法とサーバーサイド連携方法をシェアしたいと思います。
今回はサーバーサイド側の処理でデータベースから取得したレコードをDataTables表示に反映させる部分を説明いたします。
データベースから取得したレコードをDataTables表示に反映
以下のようにレコード内容がa,b,c,d,e固定になっていた部分をテーブルから取得した
実際のレコードに書き換えます。
function user_datatables(Request $request) {
$rec_data = [];
//テーブルから取得した実際のレコードに書き換え
$query = Member::query();
$member_list = $query->get();
foreach($member_list as $member){
$row_data = [
'item1' => $member->id,
'item2' => $member->sei.$member->mei,
'item3' => $member->sei_kana.$member->mei_kana,
'item4' => $member->mail,
'item5' => $member->created_at->format('Y-m-d H:i'),
];
$rec_data[] = $row_data;
}
$draw = $request->draw;
$res_json = array(
'draw' => $draw,
'recordsTotal' => '57',
'recordsFiltered' => '57',
'data' => $rec_data,
);
return response()->json($res_json);
}
以下のようにテーブルから取得したレコードがDataTablesに反映されていることが確認できました。

ページング処理の追加
次にページング処理の作成方法を説明いたします。
サーバーサイドでページング処理を実装するために
・1ページあたりの表示件数
・何件目から表示するか
のデータが必要になりますが、これらのデータはDataTablesがpostしてくれます。
以下のように取得できます。
//1ページあたりの表示件数
$length = $request->length;
//何件目から表示するか
$start = $request->start;
Laravelでレコードの抽出処理をおこなう際に、それぞれの数値をlimitおよびoffsetに設定します。
$query->offset($start);
$query->limit($length);
またフロント側でページ番号の表示処理をおこなうためにサーバーサイドからレコードの全件件数を
返す必要がありますが、これはLaravelの以下のメソッドで取得できます。
//全件件数の取得
$total_cnt = $query->count();
次回は上記の設定をおこなったページネーションのサーバーサイド処理の説明をおこないたいと思います。
木曜日担当:nishida
nishida at 2022年03月17日 10:00:00