LoginSignup
0
0

More than 1 year has passed since last update.

社内サイト構築勉強⑥(さくらのレンタルサーバ+Laravel):新規マスタ画面の作成(テーブル含む)

Posted at

前提・概要

プロジェクトは前回記事にて作成したものを想定。

今回は単純な都道府県マスタを作成してみる。

流れは下記
1.都道府県マスタの作成
 ①利用ファイル一式作成(コマンド model・controller・migration等一式)
 ②DBの設定(migration設定)
 ③投入データ設定(seeder設定)
 ④seederコマンドで実行されるように設定(DatabaseSeeder設定)
 ⑤DB登録+データ投入(migrationコマンド)
 ⑥動作確認
2.作成したデータの表示
 ①ルーティング設定
 ②blade.phpの作成
 ③コントローラーの設定
 ④動作確認
 

本日の完成形

DBに登録したデータを検索し、画面に表示させるようにする。
image.png

1.都道府県マスタの作成

マスタを作るにあたりモデルを作成しようとしたが、オプション何があったか探していたところ記事を見つけた。

上記の記載があるが、「-a」オプションで全て作ってしまって問題ないと思う。
(-aオプションで、マイグレーション・モデル・ファクトリー・コントローラー・リソース全て作成してくれるとのこと)

①model(-aオプションで全て)を作成する

以下コマンドで、都道府県マスタを作成する。

cmd
cd 社内サイト
php artisan make:model prefecture -a 

②migrationファイルの修正

DBの構造をまずは考える。
都道府県マスタなので、必要なのは名称くらい。
番号はid管理でいいので、都道府県名とカナだけ持つ形を想定。
また、今回に限らずテーブルは全てid+timestamp+論理削除(softdelete)+作成者ID+更新者ID
を持つ形とする。

2023_03_06_142019_create_prefectures_table.php
    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に初期投入できるデータのこと。
ここで指定したデータを投入することもできるし、テストデータを作らせることができる。
今回はデータを投入する。エクセル使えばそこまで大変じゃない。(めんどくさくはある)

PrefectureSeeder.php
    ・・・
    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も再作成されるので、登録したデータが消え再登録しないとログインできなくなる。
そのため事前にこちらで作成しておくのもあり。

DatabaseSeeder.php
・・・
    public function run()
    {
        $this->call(PrefectureSeeder::class);
    
・・・

⑤migrationの実行

以下コマンドにてmigrationを実行する。
--seedオプションをつけることで作成したシードファイルを取り込んでくれる。

cmd
php artisan migrate:refresh --seed

Seeder完了画面
image.png

⑥mysqlにデータが取り込まれていることを確認

ローカルのDBにデータが取り込まれていることを確認する。
image.png

2.画面の作成

先程作成したデータを画面に表示させるようにする。

①web.phpにてルーティングの設定

まずは画面→コントローラーへのルーティングを設定する。

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 とする。
内容はいったん表示だけさせるので、下記とする。

index.blade.php
@extends('welcome')
@section('title', '受注データ')
@section('content')

@foreach($queryResult as $t)
    {{$t->TDFK;}}<br>
@endforeach

@endsection

こちらのページを作成しておき、コントローラー経由で渡す際に、$queryResultとしてSQLにて取得した結果を渡すようにする。

③コントローラーの設定

コントローラー→viewの設定を行う。
削除データ以外を全て取得し、ページへパラメータとして渡している。

PrefectureController.php
・・・
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)
        ;
    }
}

④動作確認

ブラウザから設定したパスを呼び出してみる。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0