Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

チュートリアル 初級

CRUDアプリの作成(一覧表示)

2018/03/02

CRUD(クラッド)とは

・Create(新規作成)
・Read(データ取得)
・Update(更新)
・Delete(削除)

の4つの頭文字をとって、まとめて略したものです。

この4つの機能はWebアプリでは基本となる機能となっています。

よくフレームワークの Scaffold 機能を利用すると、たいてい CRUD 機能ができあがります。

今回は Laravel で CRUDアプリの作成を行おうと思います。

 

チュートリアル

チュートリアルでは受講生リストを作成してみます。

一般的な CRUD アプリのチュートリアルのブログでは CRUD の Read は「詳細」ページにあたります。

詳細ページは編集ページと仕組みがほぼ同じです。なので当ブログでは省きます。

Laravelは他のフレームワークに比べ命名規則はそれほど厳しくありません。

おおよそ次のようなルールで作ります。

【 命名規則 】
・テーブル名は小文字で複数形
・モデル名はキャメルで単数形
・コントローラー名はキャメルで単数形
・ビューのフォルダ名は小文字で単数形

例えば students というテーブルを作成するとします。

モデル ⇒ Student.php
コントローラー ⇒ StudentsController.php
ビューのフォルダ ⇒ student

こうなります。

それではこの名前でCRUDアプリを作成してみます。

 

手順

1)テーブルやデータの準備
2)ルーティングの設定
3)コントローラーの作成
4)ビューの作成
5)動作確認

 

1)テーブルやデータの準備

★構成

項目 変数名 データ型
名前 name varchar(255)
メール email varchar(255)
電話 tel varchar(255)

マイグレーションファイルを作成して students テーブルを作成します。

【 参考 】マイグレーション(新規作成)

Seederを使ってサンプルデータも入れます。

【 参考 】シーダーについて(応用)

DBの操作はEloquentを利用するのでモデルも作成します。

【 参考 】DBの操作について(Eloquent)~基本~

できたらSQLを実行して確認してみます。

 

2)ルーティングの設定

Route::get('student/list','StudentController@getIndex');

 

3)コントローラーの作成

artisanコマンドでコントローラーのスケルトンを作成。

php artisan make:controller StudentController

作成されたファイルに機能を実装していきます。

ここでポイントとなるのがページネーションです。

Eloquentによるページネーションの表示は以前エントリーしました。

わからない方はこちらをご確認ください。

【 参考 】DBの操作について(一覧表示&ページネーション)

:
  public function getIndex()
  {
  $query = \App\Student::query();
  // 全件取得 +ページネーション
  $students = $query->orderBy('id','desc')->paginate(10);
  return view('student.list')->with('students',$students);
  }

 

4)ビューの作成

ビューは以前に作成した画面を利用します。

【 参考 】Bladeについて(Bootstrapとの融合)

カスタマイズできる @yield('content') の箇所だけ抜粋します。

:
@section('content')
 <div class="page-header" style="margin-top:-30px;padding-bottom:0px;">
  <h1><small>受講生一覧</small></h1>
  </div>
  <table class="table table-striped table-hover">
  <thead>
  <tr>
  <th>No</th>
  <th>name</th>
  <th>email</th>
  <th>tel</th>
  <th>opration</th>
  </tr>
  </thead>
  <tbody>
  @foreach($students as $student)
  <tr>
  <td>{{$student->id}}</td><td>{{$student->name}}</td><td>{{$student->email}}</td><td>{{$student->tel}}</td>
  <td>
  <a href="" class="btn btn-primary btn-sm">詳細</a>
  <a href="" class="btn btn-primary btn-sm">編集</a>
  <a href="" class="btn btn-danger btn-sm">削除</a>
  </td>
  </tr>
  @endforeach
  </tbody>
  </table>

 <!-- page control -->
 {!! $students->render() !!}

@endsection

 

5)動作確認

ブラウザでプレビューしてみます。

以下のような画面が表示されればOKです。

次回は「新規登録」をやります。

 

-チュートリアル, 初級