前提・概要
プロジェクトは前回記事にて作成したものを想定。
今回は単純な都道府県マスタを作成してみる。
流れは下記
1.都道府県マスタの作成
 ①利用ファイル一式作成(コマンド model・controller・migration等一式)
 ②DBの設定(migration設定)
 ③投入データ設定(seeder設定)
 ④seederコマンドで実行されるように設定(DatabaseSeeder設定)
 ⑤DB登録+データ投入(migrationコマンド)
 ⑥動作確認
2.作成したデータの表示
 ①ルーティング設定
 ②blade.phpの作成
 ③コントローラーの設定
 ④動作確認
 
本日の完成形
1.都道府県マスタの作成
マスタを作るにあたりモデルを作成しようとしたが、オプション何があったか探していたところ記事を見つけた。
上記の記載があるが、「-a」オプションで全て作ってしまって問題ないと思う。
(-aオプションで、マイグレーション・モデル・ファクトリー・コントローラー・リソース全て作成してくれるとのこと)
①model(-aオプションで全て)を作成する
以下コマンドで、都道府県マスタを作成する。
cd 社内サイト
php artisan make:model prefecture -a 
②migrationファイルの修正
DBの構造をまずは考える。
都道府県マスタなので、必要なのは名称くらい。
番号はid管理でいいので、都道府県名とカナだけ持つ形を想定。
また、今回に限らずテーブルは全てid+timestamp+論理削除(softdelete)+作成者ID+更新者ID
を持つ形とする。
    public function up()
    {
        Schema::create('prefectures', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            // 以下add
			$table->softDeletes();
			$table->integer('REGISTID')->nullable();
			$table->integer('UPDATEID')->nullable();
			$table->string('TDFK')->nullable();
			$table->string('TDFK_KANA')->nullable();
        });
    }
③seederファイルの修正
seederはDBに初期投入できるデータのこと。
ここで指定したデータを投入することもできるし、テストデータを作らせることができる。
今回はデータを投入する。エクセル使えばそこまで大変じゃない。(めんどくさくはある)
    ・・・
    use App\Models\prefecture;
    ・・・
        public function run()
        {
            \DB::table('prefectures')->truncate();
    
            $obj = new prefecture;
            $obj->REGISTID = '0';
            $obj->UPDATEID = '0';
            $obj->TDFK = '北海道';
            $obj->TDFK_KANA = 'ホッカイドウ';
            $obj->save();
            ・・・
        }
④DatabaseSeederの設定
seederにて作成したseederを呼び出すように設定する。
またusertableも再作成されるので、登録したデータが消え再登録しないとログインできなくなる。
そのため事前にこちらで作成しておくのもあり。
・・・
    public function run()
    {
        $this->call(PrefectureSeeder::class);
    }
・・・
⑤migrationの実行
以下コマンドにてmigrationを実行する。
--seedオプションをつけることで作成したシードファイルを取り込んでくれる。
php artisan migrate:refresh --seed
⑥mysqlにデータが取り込まれていることを確認
2.画面の作成
先程作成したデータを画面に表示させるようにする。
①web.phpにてルーティングの設定
まずは画面→コントローラーへのルーティングを設定する。
//add
Route::get('prefecture', [App\Http\Controllers\PrefectureController::class, 'index'])->name('prefecture');
②表示するblade.phpの作成
表示するblade.phpを作成する。
構成はresource -> views -> maintenance -> prefecture -> index.blade.php とする。
内容はいったん表示だけさせるので、下記とする。
@extends('welcome')
@section('title', '受注データ')
@section('content')
@foreach($queryResult as $t)
    {{$t->TDFK;}}<br>
@endforeach
@endsection
こちらのページを作成しておき、コントローラー経由で渡す際に、$queryResultとしてSQLにて取得した結果を渡すようにする。
③コントローラーの設定
コントローラー→viewの設定を行う。
削除データ以外を全て取得し、ページへパラメータとして渡している。
・・・
use App\Models\prefecture;
class PrefectureController extends Controller
{
    public function index()
    {
        $queryResult = prefecture::query()
            ->selectRaw('*')
            ->whereNull('deleted_at')
            ->paginate(100)
            ;
        return view('maintenance.prefecture.index')
            -> with('queryResult', $queryResult)
        ;
    }
}



