【チュートリアル】crud-d-scaffoldを使って、Laravel5.6でブログコンテンツを爆速構築する方法

Laravel5.6用パッケージ「crud-d-scaffold」をリニューアルしたので、
チュートリアルを書きます。

まずは、出来上がりのイメージ。
以下、デモサイトになります。

■Crud-d-Scaffold デモページ
https://demo-cds.dog-ears.net/
※トップページおよび、フッタは追加修正しています。Scaffoldでは更新されません。

インデックスページ
デフォルト、1ページ10件表示。
IDでの完全一致およびスキーマ内容での部分一致で検索絞り込み表示可能。
並び替えもできます。
ちなみにスマホ等で表示すると、IDと第一カラム(下記の例だとTITLE)のみの表示になります。

Createページ
複製登録、編集もほぼ同じページになります。
one-to-manyリレーションでつながっている項目は、プルダウンで。(many側のみ)
many-to-manyリレーションでつながっている項目は、チェックボックス(Pivotテーブルにカラムがある場合は、モーダルで入力)で入力します。

詳細ページ
one-to-manyリレーションでつながっている項目は、テーブルで表示されます。

では、作っていきましょう。

最初に、以下は準備されているものとします。
・公開済みのSSH接続できるサーバー。なければ、cloud9でも可
・composerおよびphp7.1.3以上ともろもろphp拡張はインストールされているものとする。

必要要件の詳細は以下参照してください。

■Laravel 5.6 インストール
https://readouble.com/laravel/5.6/ja/installation.html

(1)Laravelのインストール

SSHでサーバーに接続後、インストールしたい場所に移動してから、以下実行

composer create-project --prefer-dist laravel/laravel ./[インストールするフォルダ]

インストールが完了したら、インストールしたフォルダ内で以下を設定する。
・publicディレクトリを、Apacheの公開フォルダに設定する。
・storage下と、bootstrap/cacheディレクトリを書き込み可能にする

DBの設定
.envファイルを修正

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

DB_CONNECTION=sqlite
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=homestead
#DB_USERNAME=homestead
#DB_PASSWORD=secret

[インストールするフォルダ]/database/に以下の空ファイルを書き込み可で作っておく
database.sqlite

これで、Laravelのインストールが完了しました。

(2)DBの設計

下記のサイトを開く

■ER-DIAGRAM-TOOL
http://er.dog-ears.net/

まずは主要モデルを作ります。

(i)postモデル

Edit – Create Model

Name:post
Display name:POST
use soft delete:チェック

※Nameは単数形のキャメルケースで書く(例.nicePost)

次に、スキーマを追加します。
スキーマの追加は、追加されたモデルのadd schemaを押せば追加できます。

Name:title
Display name:TITLE
Type:string
Input Type:text
Varidate:空欄
Faker Type:sentence()
nullable:チェックなし
unique:チェックなし
show in list:チェック
show in detail:チェック

※Nameは単数形のキャメルケースで書く(例.bigTitle)
※Varidateは、以下参照。ただしrequired、uniqueに関しては、チェックボックスで自動に入るので、入力不要。

■Laravel 5.6 バリデーション – 使用可能なバリデーションルール
https://readouble.com/laravel/5.6/ja/validation.html#available-validation-rules

※Faker Typeは、以下参照

■github – fzaninotto/Faker
https://github.com/fzaninotto/Faker

最初のスキーマ作成時に、リレーション用に表示するスキーマを設定するか聞いてくるので、OKとする。後からモデルの編集画面で変更することも可能です。

同様にスキーマをもう一つ追加

Name:body
Display name:BODY
Type:string
Input Type:textarea
Varidate:空欄
Faker Type:paragraph()
nullable:チェック
unique:チェックなし
show in list:チェックなし
show in detail:チェック

※本文は長いので、一覧画面には表示しない。また、空欄可とする。

(ii)tagモデル

— Edit – Create Model

Name:tag
Display name:TAG
use soft delete:チェック

— add schema

Name:name
Display name:NAME
Type:string
Input Type:text
Varidate:空欄
Faker Type:word()
nullable:チェックなし
unique:チェック
show in list:チェック
show in detail:チェック

※名前はユニークにした

(iii)categoryモデル

— Edit – Create Model

Name:category
Display name:CATEGORY
use soft delete:チェック

— add schema

Name:name
Display name:NAME
Type:string
Input Type:text
Varidate:空欄
Faker Type:word()
nullable:チェックなし
unique:チェック
show in list:チェック
show in detail:チェック

(iv)commentモデル

— Edit – Create Model

Name:comment
Display name:COMMENT
use soft delete:チェック

— add schema

Name:title
Display name:TITLE
Type:string
Input Type:text
Varidate:空欄
Faker Type:sentence()
nullable:チェックなし
unique:チェックなし
show in list:チェック
show in detail:チェック

— add schema

Name:body
Display name:BODY
Type:string
Input Type:textarea
Varidate:空欄
Faker Type:paragraph()
nullable:チェック
unique:チェックなし
show in list:チェックなし
show in detail:チェック

次に、リレーションさせる
各モデルの右上の●から、別のモデルの●までドラッグするとリレーションを作れます。

作るリレーションは、以下の通り。

・category -> post(one-to-many)
・post -> comment(one-to-many)
・post -> tag(many-to-many)

many-to-manyの時は、Pivotテーブル(中間テーブル)が生成されます。
中間テーブルにカラム追加もできます。

post_tagモデルで、add schema

Name:priority
Display name:PRIORITY
Type:integer
Input Type:text
Varidate:空欄
Faker Type:numberBetween(1,10)
nullable:チェック
unique:チェックなし
show in list:チェック
show in detail:チェック

こんな感じになりました。

最後に、File – Saveでcrud-d-scaffold.jsonをダウンロードします。

(3)crud-d-scaffold パッケージのインストール および実行

SSHに戻って、パッケージをインストール

composer require dog-ears/crud-d-scaffold

(2)で作ったcrud-d-scaffold.jsonをLaravelインストールフォルダ直下にアップ。
その後、以下実行

php artisan vendor:publish --tag=public --force
php artisan crud-d-scaffold:setup -f
php artisan migrate
php artisan db:seed

以上で、公開用アドレス/posts/を開くと確認できます。

まとめ

LaravelでスキャフォールドできるCrud-d-Scaffoldについて、説明させていただきました。
とりあえず、Laravelで簡単なアプリの骨組みを作りたいときに、便利かと思います。

まだ、粗削りなところが多々あると思うので、今後も更新続けていこうと思います。

もし、使ってみて、不具合や、修正要望などあれば、
どんどん言ってみてもらえればと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする