【Laravel】プロジェクト:TEST6 マスタデータの表示 画面編

マスタデータの表示

マスタデータとして画面表示。

以下記事を参考に実装。
bonoponz.hatenablog.com

で、詳細は省くとして早速最終結果から。
(※factoryで作成したテストデータとなります。)
f:id:tk49:20210919123520p:plain

カスタマイズした点としては、DBからデータを取得して表示している点。

ソースとしては、以下を追加。

// マスタメンテナンス
Route::get('/employeeMst', [EmployeeController::class, 'employeeMst']);

コントローラー追加。

    public function employeeMst(Request $request)
    {
        $query = Employee::query();
        $employees = $query
            ->selectRaw('*')
            ->paginate(config('app.pageNum'))
            ;

        return view('maintenance.employeeMst')
            -> with('employees', $employees)
            ;
    }

app.phpに上限持たせておく。

    /* ORIGINAL
    |--------------------------------------------------------------------------
    | Pagination Num
    |--------------------------------------------------------------------------
    | ページングの件数。コントローラにて参照。
    |
    */
    'pageNum' => 10000,

bladeは下の感じ。

@extends('welcome')
@section('content')
<!---------------------------->
<!-----     content      ----->
<!---------------------------->

<!-- Begin Page Content -->
<div class="container-fluid">

    <!-- Content Row -->
    <div class="row">
        <!-- タイトル -->
        <div class="col-xl-8 col-md-6 mb-4">
            <h1 class="h3 mb-0 text-gray-800">社員マスタ</h1>
        </div>
        <!-- ダウンロード -->
        <div class="col-xl-2 col-md-6 mb-4" align="right">
            <a href="#" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
                <i class="fas fa-download fa-sm text-white-50"></i>CSVダウンロード</a>
        </div>
        <!-- アップロード -->
        <div class="col-xl-2 col-md-6 mb-4" align="right">
            <a href="#" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
                <i class="fas fa-upload fa-sm text-white-50"></i>CSVアップロード</a>
        </div>
    </div>
</div>

<!-- Content Wrapper -->
<table id="example" class="table">
<thead>
    <tr>
        <th scope="col" class="centeringColumn80">社員番号</th>
        <th scope="col" class="centeringColumn150">氏名</th>
        <th scope="col" class="centeringColumn150">氏名カナ</th>
        <th scope="col" class="centeringColumn80">性別</th>
        <th scope="col" class="centeringColumn150">電話番号</th>
        <th scope="col">住所</th>
        <th scope="col" class="centeringColumn80">入社日</th>
        <th scope="col" class="centeringColumn80">編集</th>
    </tr>
</thead>
<tbody>
    @foreach($employees as $employee)
    <tr>
        <td >{{$employee->id}}</td>
        <td>{{$employee->LAST_NAME}} {{$employee->FIRST_NAME}}</td>
        <td>{{$employee->LAST_NAME_KANA}} {{$employee->FIRST_NAME_KANA}}</td>
        <td>{{$employee->SEX}}</td>
        <td>{{$employee->TEL}}</td>
        <td>{{$employee->PREFECTURE}} {{$employee->WARD}} {{$employee->ADDRESS}}</td>
        <td>{{$employee->HIRE_DT}}</td>
        <td>
            <a href="/" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
                <i class="fas fa-sm text-white-50"></i>編集
            </a>
        </td>
    </tr>
    @endforeach
</tbody>
</table>

<!---------------------------->
<!-----     script       ----->
<!---------------------------->
<script>
$(document).ready(function() {
    $('#example').DataTable({
        columns: [
            { data: "社員番号",  render: $.fn.dataTable.render.text() },
            { data: "氏名",  render: $.fn.dataTable.render.text() },
            { data: "氏名カナ",  render: $.fn.dataTable.render.text() },
            { data: "性別",  render: $.fn.dataTable.render.text() },
            { data: "電話番号",  render: $.fn.dataTable.render.text() },
            { data: "住所",  render: $.fn.dataTable.render.text() },
            { data: "入社日",  render: $.fn.dataTable.render.text() },
            { data: "編集", },
        ],
        lengthChange: true,         // lengthChange(表示件数選択機能)
        searching: true,            // searching(検索機能)
        order: [ [ 0, "asc" ] ],    // order(ソート機能)
        language: {
            "decimal": ".",
            "emptyTable":     "表示するデータがありません。",
            "thousands": ",",
            "sProcessing": "処理中...",
            "sLengthMenu": "_MENU_ 件表示",
            "sZeroRecords": "データはありません。",
            "sInfo": " _TOTAL_ 件中 _START_ から _END_ まで表示",
            "sInfoEmpty": " 0 件中 0 から 0 まで表示",
            "sInfoFiltered": "(全 _MAX_ 件より抽出)",
            "sInfoPostFix": "",
            "sSearch": "検索:",
            "sUrl": "",
            "oPaginate": {
                "sFirst": "先頭",
                "sPrevious": "前",
                "sNext": "次",
                "sLast": "最終"
            }
        },
        columnDefs: [
            {
                targets: 'centeringColumn80',  // どの列か指定
                width: 80,
                className : 'dt-body-center dt-head-center'  // センタリングの指定
            },
            {
                targets: 'centeringColumn150',  // どの列か指定
                width: 150,
                className : 'dt-body-center dt-head-center'  // センタリングの指定
            },
        ],
    });
});
</script>
@endsection

ToDo

(済:■、完了:●、対応中:★、保留:△)

  1. 【■】インストール手順
  2. 【■】プロジェクトの始め方
  3. 【■】テンプレートの取込方
  4. 【●】fullcalendar を使用してカレンダー画面を表示させる
  5. 【●】カレンダー画面を表示させる際、画面遷移させず右側(コンテナ)部分に表示
  6. 【■】(小ネタ)はてなブログソースコードを表示させる
  7. 【△】データの表示
  8. 【△】データの編集
  9. 【△】データの登録
  10. 【★→■】マスタデータの表示
  11. マスタデータの編集
  12. マスタデータの登録
  13. Laravel画面遷移時のサイドメニュー(アコーディング)状態保持の方法
  14. ファイルアップロード
  15. ファイルダウンロード
  16. google Calendarとの同期
  17. ログイン画面
  18. 注文データ登録
  19. (小ネタ)visual studioのソースにスクロールバーが出ない
  20. ファイルを機能単位で分割する