2018/04/25

CRUD(クラッド)とは
・Read(データ取得)
・Update(更新)
・Delete(削除)
の4つの頭文字をとって、まとめて略したものです。
この4つの機能はWebアプリでは基本となる機能となっています。
よくフレームワークの Scaffold 機能を利用すると、たいてい CRUD 機能ができあがります。
今回は Laravel で CRUDアプリの作成を行おうと思います。
チュートリアル
チュートリアルでは受講生リストを作成してみます。
詳細ページは編集ページと仕組みがほぼ同じです。なので当ブログでは省きます。
Laravelは他のフレームワークに比べ命名規則はそれほど厳しくありません。
おおよそ次のようなルールで作ります。
・テーブル名は小文字で複数形
・モデル名はキャメルで単数形
・コントローラー名はキャメルで単数形
・ビューのフォルダ名は小文字で単数形
例えば students というテーブルを作成するとします。
モデル ⇒ Student.php
コントローラー ⇒ StudentsController.php
ビューのフォルダ ⇒ student
こうなります。
それではこの名前でCRUDアプリを作成してみます。
手順
1)テーブルやデータの準備
2)ルーティングの設定
3)コントローラーの作成
4)ビューの作成
5)動作確認
1)テーブルやデータの準備
★構成
| 項目 | 変数名 | データ型 |
|---|---|---|
| 名前 | name | varchar(255) |
| メール | varchar(255) | |
| 電話 | tel | varchar(255) |
マイグレーションファイルを作成して students テーブルを作成します。
- 【 参考 】マイグレーション(新規作成)
DBの操作はEloquentを利用するのでモデルも作成します。
- 【 参考 】DBの操作について(Eloquent)~基本~
Seederを使ってサンプルデータも入れます。
- 【 参考 】シーダーについて(応用)
できたら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です。
次回は「新規登録」をやります。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。

