【PHP/Larabel】掲示板サイトの作成【サンプル】

PHPで掲示板を作成する方法についてサンプルコード付きで紹介します。

【はじめに】掲示板の構成

メソッド URL 説明
GET,HEAD / トップページ(投稿一覧)
POST posts 投稿を追加
GET,HEAD posts/create 投稿の作成ページを表示
GET,HEAD posts/{post} 投稿の詳細を表示
PUT,PATCH posts/{post} 投稿を編集
DELETE posts/{post} 投稿を削除
GET,HEAD posts/{post}/edit 投稿の編集ページを表示
POST comments 投稿にコメントを追加

【下準備】プロジェクトの作成、データベースの作成

● bbsプロジェクトを作成します。

php composer.phar create-project laravel/laravel bbs --prefer-dist

cd bbs

データベース作成

データベースを作成します。

mysql --user=root --password=

MariaDB [(none)]> CREATE DATABASE `bbs_db`

-> CHARACTER SET utf8mb4
-> COLLATE utf8mb4_unicode_ci;

※「Query OK, 1 row affected (0.01 sec)」などと表示されたら成功

ENV編集

データベースの接続情報を.envに設定します。


#### マイグレーション

● 「bbs\database\migrations\」以下にある全てのファイルを削除します。

● 以下コマンドを実行し、マイグレーションファイルを作成します。

$ php artisan make:migration create_posts_table --create=posts
$ php artisan make:migration create_comments_table --create=comments

● 作成したマイグレーションファイル2つを以下のように編集します。



● 以下コマンドでマイグレーションを実行し、テーブルを作成します。

$ php artisan migrate

※新たにマイグレーションファイルを追加したときは「php artisan migrate:refresh」を実行します。

【モデルの作成】投稿(Post)、コメント(Comment)

テーブルに対応するモデルを作成します。

● 以下のコマンドを実行し、Post、Comment用のモデルを作成します。

$ php artisan make:model Post
$ php artisan make:model Comment

● 作成したモデルファイル2つを次のように編集します。



説明
fillable モデルでデータを作成する時に、複数代入を許可
comments, post テーブル間のリレーションの設定。投稿は複数のコメントをもつ。コメントは1つの投稿に従属。

【テストデータ作成】

テストデータ(50件の投稿、各投稿に2つのコメント)を作成します。

● 以下のコマンドを実行し、ファクトリを作成します。

$ php artisan make:factory PostFactory --model=Post
$ php artisan make:factory CommentFactory --model=Comment

作成したファクトリファイル2つを以下のように編集します。



● 「database/seeds/DatabaseSeeder.php」を以下のように編集します。


● 以下のコマンドを実行し、テストデータをデータベースに入れます。

$ composer dump-autoload

$ php artisan db:seed

Database seeding completed successfully.

【コントローラー作成】インデックス画面、投稿画面、コメント画面

投稿一覧画面を作成します。

● routes/web.php以下のように編集し、ルーティングを設定します。


※投稿画面のルーティングも設定しています

● 以下のコマンドでコントローラーを作成します。

$ php artisan make:controller PostsController
$ php artisan make:controller CommentsController

● 作成されたコントローラファイルを以下のように編集します。

app/Http/Controllers/PostsController.php


app/Http/Controllers/CommentsController.php


【ビュー作成】インデックス画面、投稿画面、コメント画面

● layout.blade.phpを次のように編集し、共通テンプレートを作成します。


● ビューを作成します。

投稿一覧(resources/views/posts/index.blade.php)


投稿詳細表示(resources/views/posts/show.blade.php)


編集画面(resources/views/posts/edit.blade.php)


【クエリ確認】表示とログファイルに保存

実行されているクエリを確認し、ログファイルに保存します。


関連ページ

【PHP/Laravel入門】基本的な使い方とサンプル集
PHPの人気フレームワーク「Laravel」の基本的な使い方とサンプル集についてまとめました。
【PHP入門】基礎文法とサンプルコード集
PHPの基本文法やサンプルプログラムを入門者向けに解説しています。

コメント