EXCEL VBAやPHP、Laravelに関するWINDOWS・WEBプログラミングの解説ブログです。

Laravel10で月毎のスケジュールシステムを作成

  • 2023年1月13日
  • 2023年1月13日
  • Laravel

Laravel10でスケジュールシステムを作成しました。間もなく2023年2月7日にLaravel10がリリースされますが、本日はまだ2023年1月です。Laravel10 dev 開発版で作成しました。FullCalendar等ライブラリを使わずに、フロント部分については、ゴリゴリPHPでプログラムを書いて作りました。

はじめに

Laravel プロジェクトの作成
windowsのコマンドプロンプトあるいはVisualStudioのターミナルで行います。

Laravel10の開発版10.x-devを導入するには、10開発版を指定する必要があります。このようにしてプロジェクトを作成しました。

通常は(Laravel10リリース)2023年2月7日?以降は、下のコマンドで良いです。

作成したディレクトリに移動します。開発用サーバを起動します。

laravelのenvファイル DB設定を DB_DATABASE=lara1 とします。

次にLaravel Breezeを導入するためのお決まりのコマンドを入力します。

composer require laravel/breeze –dev
php artisan breeze:install
php artisan migrate
npm install
npm run dev

こちらのブログシステムに機能追加として作成していきました。ユーザーアカウントを三名追加しておきます。

schedules テーブルの作成

マイグレーションファイルを作成します。

生成された database\migrations\2023_01_08_144153_create_schedules_table.php のカラムを拡張します。
タイトル title 、 日付 yyyymmdd、 登録者 user_id のカラムを追加します。

以下のようにマイグレーションを実行し、Scheduleモデルを作成し、ScheduleFactoryを作成します。

ダミーデータを作成

生成された database\factories\ScheduleFactory.php ファクトリーに以下追加します。destinationメソッド内です。

シーダーを作成します。

database\seeders\SchedulesSeeder.php が生成されます。

use App\Models\Schedule; を追記し、
runメソッドの中は、
Schedule::factory()->count(70)->create();
とします。
シーダーを実行します。
php artisan db:seed –class=SchedulesSeeder
以下のように70件のダミーデータが生成されました!

ホワイトリストの設定、Usersテーブルとのリレーション設定

Scheduleモデルにホワイトリストの設定とあわせて、Usersモデルとのリレーションも設定しておきます。
app\Models\Schedule.php 内 追記します。
app\Models\User.php 内 追記します。

 Scheduleコントローラーの作成

コントローラーを作成します。

後ほど、コントローラー内を編集していきます。

ルーティングの設定

web.phpを編集します。以下 ルーティング設定を追記します。

indexメソッド

月毎のカレンダーにテーブルの情報を出力するために、コントローラーのindexメソッドから始めます。

GETパラメータpageが空の場合は、当月として変数pageに0が格納されます。何か月先か前かはGETパラメータpageで取得して、何年何月かを判定しています。schedulesテーブルからはwhere句で、該当月のレコードだけを配列Schedulesに取得するようにしています。

ブレードファイル resources\views\sche_index.blade.php を作成します。index.blade.phpとしても良かったのですが、ブログシステムで既に使っているため、sche_index.blade.phpとしました。階層を深くしてもよかったですね。
ブレードファイルの中で@php~ ゴリゴリPHPを書いています。配列schedulesの中身を、日毎の配列に入れなおしています。コントローラー側でやっても良いですが。

app.blade.phpは、Laravel10でブログシステム作成│ちからえもんWEB・WINDOWSプログラミング (chikaraemon.com)
をご参照ください。

sche_index.blade.php

ちゃんとカレンダーが表示されました!また、schedulesテーブルの2023/01のレコードも出力されています。
次の月、前の月をクリックしてそれぞれの該当月のスケジュールも確認できます。

create、storeメソッド

コントローラーのcreateメソッドです。

ブレードファイル resources\views\sche_create.blade.php を作成します。
sche_create.blade.php

コントローラーの store メソッドです。

登録の動作確認

2023/3/3の登録ボタンをクリックします。

2023年3月3日の予定登録フォームが表示されます。コントローラーから、yyyy,mm,dd,page 四つの変数から情報を受け取っていることが重要です。

 登録ボタンをクリックしますと、2023/3/3に予定が登録されました!どなたが登録した予定かが分かります。また、ちゃんと2023/3のページが表示されています。
sche_index.blade.phpの中にセッションメッセージを出力するコードを追加してあります。<table class=”table w-75″>の上です。
これでセッションメッセージを出力できます。

edit、updateメソッド

次に予定を変更するためのeditメソッドです。フォームリクエストを受け取るために第二引数に$requestを指定しています。

ブレードファイル resources\views\sche_edit.blade.php を作成します。このフォームから変更と削除ができるようにしますので、二つ目のform~は削除フォームとなります。
sche_edit.blade.php

updateメソッドです。

変更の動作確認

登録してある予定が変更できるのか動作を確認します。ひな祭りを編集します。編集リンクをクリックします。

予定を変更します。

変更が確認できました!

destroyメソッド

予定を削除するためのdestroyメソッドです。

2023/3/3のひな祭りを削除します。下のように削除ができました!

今回は、Laravel の中に PHP的なプログラムを比較的ゴリゴリ書いてみましたが、結構楽しかったです!