CRUDはWebアプリケーションの基本です。
作成の型は決まっているので
「CRUD作成のテンプレート」
として使用できるようにまとめてみました。
いづれは公式のScaforld実装され、このような手間もなくなるのでしょうが。。。
なるべく最短最速を目指します。
ただ知らないことも多いので指摘頂けると幸いです。
開発環境
OS:Windows10 64bit
XAMPP:v3.2.2
MySQL(MariaDB):10.1.35-MariaDB
Webフレームワーク:Laravel Framework 5.7.27
エディタ:VisualStudioCode 1.30.2
Laravelプロジェクト作成
最新バージョンでLaravelプロジェクト作成
composer create-project --prefer-dist laravel/laravel problemCollectionOne
カレントディレクトリを作成したプロジェクトに移動させます。
マイグレーション&シーダー&モデル&コントローラ&ファクトリー生成
①マイグレーション&シーダー作成
php artisan make:migration problem --create m_problem
php artisan make:seeder problemSeeder
【データベースの作成】
MySQLの場合、以下コマンドで作成する
mysql -u root -p
create database problemcollectionone;
grant all privileges on problemcollectionone.* to mysql@localhost identified by 'mysql';
データベース接続設定 (.env)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=problemcollectionone
DB_USERNAME=mysql
DB_PASSWORD=mysql
Syntax error エラー対策
マイグレーションファイル編集
database\migrations\2019_02_21_132304_problem.php
シーダーファイル編集
database\seeds\DatabaseSeeder.php
database\seeds\problemSeeder.php
マイグレーションコマンドを実行しデータベースにエラーなく作成されるか確認する
・全てのテーブルを再作成コマンド
php artisan migrate:reset
・シーダーの実行
php artisan db:seed
②モデル&コントローラ&ファクトリー&バリデーション作成
php artisan make:model Models/Problem -c -r -f
php artisan make:request ProblemValidationRequest
・モデルにテーブル指定と論理削除行を追加する
$guardedはupdate&createなどで編集できない列を指定
③ルートにresource追加
新規作成、更新、削除、一覧、詳細のルートを全て記載
routes/web.php
gist30c7df5bc5fda3ab7cddf90b9cbd6479
データ確認
ここまででとりあえずデータベース連携はできて、
データベースからデータの取得ができるようになっているはずです。
コントローラのindexメソッドに以下を追加して
ブラウザよりアクセスして確認します。
app\Http\Controllers\ProblemController.php
ビルドインサーバ起動
php artisan serve --host 0.0.0.0
ブラウザよりアクセスして以下画面になっていればデータが取得できています!
http://localhost:8000/problem/
Collection {#233 ▼ #items: array:1 [▼ 0 => problem {#234 ▼ #table: "m_problem" #connection: "mysql" #primaryKey: "id" #keyType: "int" +incrementing: true #with: [] #withCount: [] #perPage: 15 +exists: true +wasRecentlyCreated: false #attributes: array:17 [▶] #original: array:17 [▶] #changes: [] #casts: [] #dates: [] #dateFormat: null #appends: [] #dispatchesEvents: [] #observables: [] #relations: [] #touches: [] +timestamps: true #hidden: [] #visible: [] #fillable: [] #guarded: array:1 [▶] #forceDeleting: false } ] }
その他設定
config\app.php
とりあえず、ここまでがCRUDアプリケーション作成の基本部分です。
ここまで読んでいただきありがとうございます。
続きは、別記事に記載します。