前回【Laravel-admin】PHPのライブラリ「Laravel-admin」のインストール方法でPHPのフレームワーク「Laravel」と管理画面用のパッケージである「Laravel-admin」のインストールまで行いました。
「Laravel-admin」では対象テーブルのモデルとコントローラを作成するだけで簡単に対象テーブルのCRUD画面を実装することができます。
CRUD実装となるとまだまだ僕は頭を抱えることも多いですが「Laravel-admin」でのCRUD作成、すごく簡単です!
ってことで、テーブルを作成してそのテーブルのCRUD機能を提供するフォームを実装します。
マイグレーションの実行
まずはテーブルの作成です。
Laravel-adminではLaravelと同じ要領でマイグレーションファイルを実行しテーブルを作成することができます。
試しに以下のコマンドで「test_users」というテーブルのマイグレーションファイルを作成します。
1 |
php artisan make:migration create_test_users_table --create=test_users |
実行後、database/migrate配下にマイグレーションファイルが作成されます。
モデルを同時に作成する場合は以下のコマンドになります。
1 |
php artisan make:model Models/TestUser -m |
これでマイグレーションファイルとモデルが作成されました。
デフォルトではテーブルのカラムは「id」と「created_at」と「updated_at」のカラムのみで作成されるので、作成したいテーブルの構造に合わせこちらを編集します。
マイグレーションファイルの記法については公式のリファレンスに詳しく解説されています。
今回作成したテーブル構造は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateTestUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('test_users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->integer('age'); $table->string('email'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('test_users'); } } |
基本的な部分は自動で作成されるので、upメソッドの中に必要なカラムを記述すれば作成できます。
記述出来たらマイグレートを行ってテーブルを作成します。
ちなみに取り消したい場合は「php artisan migrate:rollback」コマンドで直前の実行を取り消せます。
その他「php artisan migrate:rollback --step=<回数>」で行ったマイグレート回数を指定してロールバックできます。
マイグレートが正常に実行できていればテーブルが作成されています。
モデルを作成する
テーブルが作成出来たらモデルを作成します。
既にマイグレーションファイルとともに作成している場合は不要ですが、個別でモデルの作成を行うには以下のコマンドで実行します。
1 |
php artisan make:model Models/TestUser |
この規則を守っていればモデルは自動的に複数形のテーブルを見てくれるので便利です。
モデルは通常appフォルダ直下に作成されますが、Adminは以下のフォルダを指定することもできます。
1 |
php artisan make:model Admin\Models\TestUser |
ちなみにModelsディレクトリがない場合は自動で作成してくれます。
コントローラを作成する
モデルが作成出来たら次はコントローラを作成します。
以下のコマンドを実行すればテーブルに対応したコントローラーを作成できます。
1 |
php artisan admin:make TestUserController --model=App\TestUser |
app/Admin/Controller配下に「TestUserController.php」が作成されていると思います。
このコントローラをルーティングに追加します。
「app/Admin/routes.php」のfunction (Router $router)のカッコ内に以下の一文を追加します。
1 |
$router->resource('auth/test', TestUserController::class); |
第一引数は任意で決めることできます。第二引数に先ほど作成したコントローラの名称となります。
記述が出来たらサーバを起動し、「<ホスト名>/admin/auth/test」にアクセスすると
このようにContorollerを作成する際にモデルを指定するだけで、そのモデルに対応したCRUD画面を自動作成してくれます。Laravel-adminすごいっ!
ちなみにコントローラのクラス内の関数ですが、
indexは一覧画面、showは個別確認、editは編集、createは新規作成のフォームを表示するための関数っぽいです。
そしてこの各関数で呼び出されているgrid、detail、formなどの関数で表示するカラムを選択しています。
このgridやフォーム内でオプションを与えてあげることで様々な機能を付加させることができるようです。
一通り調べたら記事にしたいと思います!
おまけ
以上がLaravel-adminでの新規画面の作成です。
テーブルのデータの単純な操作画面であればすぐにある程度整った画面が作れるので、簡単な管理画面であれば難なく作れそうな印象を受けました。
これからもっとカスタマイズして、ある程度複雑なリレーションをもったテーブルに関しても表示等できるようにしてみたいと思います!
以下はLaravel-adminを使う中で目に付いた備考です。
画面作成とは直接関係はありませんが、情報として載せておきます。
laravelのコーディング規約について
各フレームワークはどれも大体コーディングの規約を規定しています。
ちなみにlaravelは「PSR-2」というコーディング規約を採用しているようです。
参考:https://laravel.com/docs/5.7/contributions#coding-style
PSR-2のコーディングスタイルガイドを見てみると改行やインデントなどについての取り決めが明記されています。
コーディング規約の導入によりルールを決めることでコードのばらつきをなくし、可読性を向上させるメリットもあるので、個人開発といえど導入するのは得策だと思います。
ただ、いちいち規約を確認しつつコードを書くのは大変なのでVSCodeを使っている場合は「phpcs」という拡張機能をインストールできるのでそちらを使用しましょう。
以下のサイトでphpcsについて詳しく解説してくれています。
laravelでのテーブル、コントローラー、モデル名称
コーディング規約に明記はされていませんが、テーブル名やコントローラなどの名称にも「こっちのほうがいいよ」という暗黙の決まりがあるみたいです。
例えばテーブル名はスネークケースの複数形です。例:test_users
そしてそのテーブルに対応するモデルはアッパーキャメルケースの単数形になります。例:TestUser
この「TestUser」では暗黙的にスネークケース少数系のテーブルを見てくれるようlaravel内で処理してくれます。
そしてコントローラーもモデルと同じくアッパーキャメルのタンス系となりますのでまとめると以下の等になります。
テーブル:スネークケース&複数形
モデル:アッパーキャメルケース&単数形
コントローラー:アッパーキャメルケース&単数形
先述したとおり、モデルでは複数形のテーブルを自動で参照するので単数形のテーブルは参照できません。
テーブル名を指定することもできますが、上記ルールを守ればその必要もないのでそうせざる理由がなければ上記のルールでテーブル等を作成したほうがいいと思います。