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

Laravel10でブログシステム作成

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

2023年2月にLaravel10がリリースされます。本日は2023年1月ですので、リリース前です、今回はLaravel10開発版で開発しています。
Livewireとかvueとか目新しいことはせずに、古典的なプログラムでブログシステムを作成しています。↓こんな感じです。

はじめに

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

ブラウザで http://127.0.0.1:8000/ を叩くと、右上にLogin Regsiter リンクが見えますので、Register リンクを叩いて、以下のように三名 ユーザーアカウントを登録します。

blogsテーブルの作成

blogsテーブルを作成します。

database\migrations\2023_01_08_111831_create_blogs_table.php
作成されたこちらのマイグレーションファイルのカラムを拡張します。

Schema::create(‘blogs’, function (Blueprint $table) {
$table->id();
$table->string(‘title’);
$table->text(‘content’);
$table->string(‘image’);
$table->integer(‘user_id’)->unsigned();
$table->timestamps();
});

タイトルtitle、内容content、画像ファイルのパスimage、投稿者したユーザーID user_idを追加しました。

マイグレーションを実行します。

BLogモデルを作成します。

BlogFactoryを作成します。

database\factories\BlogFactory.php が生成されますので、BlogFactory.phpを編集します。destinationメソッドのreturn内に以下のように追記します。

blogsテーブルにダミーデータを挿入

次にダミーデータを作成します。

config/app.php内を日本語対応に変更しておきます。
‘fallback_locale’ => ‘ja’,
‘faker_locale’ => ‘ja_JP’,
‘locale’ => ‘ja’,

BlogsSeederを作成します。

database\seeders\BlogsSeeder.php が生成されますので、BlogsSeeder.phpを編集します。

use App\Models\Blog; を追加して、runメソッド内に追記します。
Blog::factory()->count(5)->create();

シーダーを実行して、ダミーデータを生成します。

ダミーデータの生成を確認しました。画像パスであるimageカラムは空です。

画像ファイルをアップロードできるようにする

publicフォルダにファイルをアップロードできるようにするため、以下のターミナルを実行します。

 

BLogモデルにホワイトリストを設定

app\Models\Blog.php にホワイトリストを設定します。title, content, user_id, image カラムをホワイトリストにします。

BlogとUserとの間にリレーション設定

blogsテーブル内のカラムuser_idと usersテーブル内のカラムidのリレーションを設定します。
app\Models\Blog.php に以下追加します。

app\Models\User.php に以下追加します。

Blogコントローラーの作成

BlogControllerを作成します。

app\Http\Controllers\BlogController.php が生成されます。後ほど、index , create , edit などのメソッドを編集します。

Routing の設定

web.phpでルーティングを設定します。routes\web.php に追記します。

indexメソッド

Blogコントローラーのindexメソッドから編集します。

テンプレートファイルを作成します。
resources\views\app.blade.php を作成します。
中身は以下のようになります。Bootstrapのスターターテンプレートを引用しています。

ブレードファイル resources\views\index.blade.php を作成します。中身は以下のようになります。

ブラウザでhttp://127.0.0.1:8000/blogsを叩くと、以下のように blogs テーブルの内容が出力されます!

createメソッド

次にブログ記事を新規登録できるようにcreateメソッドを編集します。

createメソッドには、次の一行を追記するのみです。
returnview(‘create’);

ブレードファイル resources\views\create.blade.php を作成します。中身は以下のようになります。

コントローラーのstoreメソッドを以下のように編集します。

動作確認です。
登録ボタンをクリックすると、登録フォームが表示されますので、内容を入力して登録します。

下画像のように、画像ファイルも含めて無事登録できました!

editメソッド

情報を編集するため、コントローラーのeditメソッドを編集します。投稿者以外が編集できないようにしてあります。

ブレードファイル resources\views\edit.blade.php を作成します。中身は以下のようになります。

一覧表示のページングで例えば2ページ目の記事を編集します。

編集ボタンをクリックしますと、編集フォームが表示されます。戻るボタンをクリックすると、2ページ目に戻ってくれます。元居た場所に戻るということです。

コントローラーのupdateメソッドを以下のように記載します。

動作確認してみます。情報を修正して、画像も選択します。

情報が更新されました!また、画像もアップできています。また、ちゃんと2ページ目に戻ってきています。

destroyメソッド

最後に情報を削除するための destroy メソッドです。

割愛しますが、これで削除できます!

Laravel面白いですね。私は、実務でLaravel使っていませんが、Laravelって便利だなーと本当に思いますね。ではでは。