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)
【クエリ確認】表示とログファイルに保存
実行されているクエリを確認し、ログファイルに保存します。
コメント