さて、いよいよCRUDシステムの準備に入るのですが、その前に、前提知識となるMVCモデルについてまとめておきます。
MVCモデルの概要
MVCモデルとは、プログラムの処理を役割ごとに分けて開発を行う考え方のことです。
Model(モデル)、View(ビュー)、Controller(コントローラ)、の頭文字をとったもので、それぞれ別の役割を担っています。
それぞれの役割は下記の図を見てください。
1、ユーザーがWEBサイトにアクセスする
2、ルーティングファイルによってアドレスごとに処理が振り分けられる
3、振り分けられると、コントローラー内に書かれた処理を実行する
4、処理結果がモデルに渡され、モデルはそれをもとにデータベースとのやり取りやデータ処理を行う
5、モデルで処理されたデータがコントローラーに渡され、その後さらに必要な処理をコントローラーで行い、最終的にユーザーがみる画面に反映される
このMVCの基本の考え方をもとに、実際にデータを作成(create)、表示(read)、更新(update)、削除(delete)していきましょう。
ここからは、データを入れておくテーブルの作成、モデルの作成、コントローラーの作成、ダミーデータの挿入、を行っていきます。
テーブルの作成
前回接続したデータベースの中に、今回使うデータを入れておくテーブルを用意します。
今回は、TODOリストなので、todosというテーブルを作成します。
マイグレーションファイルの作成
まずは、マイグレーションファイルを作るために下記コマンドを叩いてください。
php artisan make:migration create_todos_table
すると、database>migrationsの中に今の日付のファイルが作成されます。
マイグレーションファイルに、必要なカラムを追記する
次にマイグレーションファイルに、下記のように追記してください。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTodosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('todos', function (Blueprint $table) {
$table->id();
$table->string('content', 30); //内容(30文字以内の文字列)
$table->boolean('done'); //処理済みかどうか(0か1で判断)
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('todos');
}
}
ファイルを編集したら、下記コマンドをたたき、テーブルを更新します。
php artisan migrate:refresh --seed
これで、データベースにtodosテーブルが作成されました。データベースを確認してみてください。
このようにtodosがあればOKです!
モデルの作成
次にモデルを作成するために、下記コマンドを叩いてください。
php artisan make:model Todo
すると、app>Modelsの中に、Todo.phpというモデルファイルが作成されます。
コントローラの作成
次にコントローラを作成するのですが、今回はCRUDに合わせてURLなど推奨している形を自動で作ってくれるRestという仕組みを使います。
下記コマンドをたたき、コントローラを作成してください。
php artisan make:controller TodoController --resource
すると、app>Http>Controllersの中に、TodoController.phpというコントローラファイルが作成されます。
中身を確認すると、index、create、store、show、edit、udpate、destroyと分かれていると思います。
–resource をつけることで、Laravelが推奨しているこれらのメソッドを自動生成してくれます。この考え方や仕組みのことを、Restと言います。
メソッド名 | 機能 |
index | 一覧表示 |
create, store | 新規作成 |
show | レコード作成 |
edit, update | 更新処理 |
destroy | 削除処理 |
これでコントローラの作成は完了です。
テストデータの挿入
次に、データベースのtodosテーブルに、いくつかダミーデータを入れておきます。
TodoSeeder.phpを作成
テストデータをデータベースに設定するためには、database>seedsに、seederファイルを作る必要があります。
下記コマンドをたたき、todosテーブルのためのseederファイルを作成しましょう。
php artisan make:seeder TodoSeeder
これでdatabase>seedsに、TodoSeeder.phpというファイルができました。
TodoSeeder.php内にテストデータ情報を追記
下記のように追記をして、内容を編集してください。ここでは、テストデータを三つほど入れておきます。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; //追記 DBの定義されている場所
use App\Models\Todo; //追記 モデルと接続
class TodoSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('todos')->insert([
// ダミーデータを三つほど入れておく
[
'content' => 'あああ',
'done' => 0,
],
[
'content' => 'いいい',
'done' => 0,
],
[
'content' => 'ううう',
'done' => 1,
],
]);
}
}
DatabaseSeederクラスで追加Seederを呼び出す
DatabaseSeeder.phpを編集して、下記のようにTodoSeeder.phpを呼び出してください。
これによって、大量のデータを扱う際も、ファイルを分割して扱えています。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create(); //factoryは大量のダミーデータ挿入時に利用
$this->call(TodoSeeder::class); //追記
}
}
シーダーを実行する
下記コマンドをたたき、シーダーを実行します。
このコマンドは、マイグレーションリセットを行い初期値設定をしてくれるので、データベースを完全に作成し直したいときに便利です。
php artisan migrate:refresh --seed
さて、ここまでできたら、データベースにテストデータが登録されているはずです!
このように登録されていれば完了です!
お疲れ様でした!