【投稿アプリ自作(6)】Seederでダミーデータの作成(Laravel)

スポンサーリンク

Webアプリを自作するためにPHPのフレームワークのLaravelを導入することに決めました。
PHP初心者かつLaravel初心者ですが、自分なりにスキルを得るためにLaravelを用いた記事投稿アプリを自作しました。その過程を備忘録としてまとめます。
最終的にはブラウザを利用して記事投稿画面の表示、ユーザごとの記事投稿数のグラフ化を目指したいと思います。
本記事は連載【投稿アプリ自作】の第六回目で、Seederでダミーデータを作成する方法をまとめます。
※:Laravelは5.3からファイル構成が大幅に変わりました。本記事ではLaravel5.3以降を使って説明したいと思います。
※2:データベースはXAMPPに入っていたMySQLを使うことにします。事前にデータベースアカウントを登録しておいてください。

目次


ゴール


本記事では、以下の2つについてまとめます。
・Seederファイルの変更
・Sedderを実行してダミーデータの作成

以下の画像ではSeederによって第四回目で設計したDetailedArticlesテーブルにダミーデータを作成しました。
その他のテーブルにも同様にダミーデータを作成することを目指します。


必要なもの

必要なもの 価格(円)
1 PC ピンキリ
備考 インターネット接続可能なこと
2 XAMPP 無料
備考 持っていない場合は、こちらを参照→XAMPPのインストール方法
3 Composer 無料
備考 持っていない場合は、こちらを参照→Composerのインストール方法
4 Laravelフレームワーク 無料
備考 インストールしていない場合は、こちらを参照→Laravelのインストール方法
5 MySQLのデータベースアカウント 無料
備考 持っていない場合は、こちらを参照→phpMyAdminでデータベースとユーザを新規登録する
6 投稿アプリ向けのテーブル 無料
備考 【投稿アプリ自作】の第四回目で作成した投稿アプリ向けのテーブルです。持っていない場合は、こちらを参照→【投稿アプリ自作(4)】テーブル設計とマイグレーション実行(Laravel)




事前準備

テーブルの作成


事前に投稿アプリ向けのテーブルを用意する必要があります。
第四回目でテーブル設計と新規テーブルの作成方法をまとめていますので、まだ作成していない方は以下の記事を参考にして新規テーブルの作成をしてください。

【投稿アプリ自作(4)】テーブル設計とマイグレーション実行(Laravel)
Laravelの練習がてら記事投稿Webアプリを自作したので、備忘録としてまとめたいと思います。 本記事はLaravelで投稿アプリのテーブル設計に基づいてマイグレーションファイルを作成し、実行することで投稿アプリに使用するテーブルの生成をする過程をまとめます。


テーブルの関連性


投稿アプリ向けのテーブルの関連性をER図にまとめると下の様になります。(IDEDF1X記法で記述)
※ネットで検索しながら見よう見まねで書いたので間違っているかもしれませんがご容赦ください。





ダミーデータの設計


Seederの機能を使ってダミーデータを作成していくのですが、実際の中身は何を使うのかはこちらで決定しないといけません。
この章では以下の各テーブルのダミーデータを設計します。
・Articlesテーブル
・DetailedArticlesテーブル
・ArticleUsersテーブル
・Categoriesテーブル
・Tagsテーブル


Articlesテーブルのダミーデータの設計


Articlesテーブルのカラムは【投稿アプリ自作】の第四回目で以下の様に設計しました。

Articlesテーブル
記事を管理するテーブルです。各記事はユーザやカテゴリー、タグを紐づけられています。

カラム名 変数名 補足
記事ID article_id 主キー
ユーザID user_id 外部キー
ユーザごとの記事ID user_article_id
カテゴリーID category_id 外部キー
タグID tag_id 外部キー





Articlesテーブルのダミーデータ
このテーブルはIDばかりでその他のテーブルの紐づけに使用します。
ダミーデータは以下の様にしたいと思います。

記事ID ユーザID ユーザごとの記事ID カテゴリーID タグID
1 1 1 1 1
2 1 2 2 3
3 2 1 1 1
4 1 3 2 2
5 3 1 4 6
6 3 2 3 5
7 1 4 3 5
8 2 2 3 4
9 3 3 3 5
10 2 3 3 4
11 1 5 1 1
12 3 4 2 2
13 3 5 3 5
14 2 4 3 4
15 1 6 1 1
16 2 5 2 4
17 3 6 1 1
18 3 7 1 1
19 2 6 2 3
20 1 7 1 1


DetailedArticlesテーブルのダミーデータの設計


DetailedArticlesテーブルのカラムは【投稿アプリ自作】の第四回目で以下の様に設計しました。

DetailedArticlesテーブル
記事詳細を管理するテーブルです。Articlesテーブルとarticle_idで1:1に関連を持っています。

カラム名 変数名 補足
記事ID article_id 主キー 外部キー
タイトル title
記事内容 body
投稿日 published_date





DetailedArticlesテーブルのダミーデータ
このテーブルはタイトルや内容など記事の具体的な内容を格納します。
ダミーデータは以下の様にしたいと思います。

記事ID タイトル 内容 投稿日
1 自己紹介! はじめまして、ケンです。よろしく! 2017-04-01
2 おすすめイタリアン! このイタリア料理店おすすめです! 2017-04-01
3 自己紹介です こんにちは、エミリーです。よろしくです。 2017-04-01
4 おすすめ和食 この和食屋もおすすめです!ぜひ! 2017-04-01
5 北海道旅行 今日は北海道にいます。寒い。。。 2017-04-01
6 最近の仕事 仕事で外回り多い。明日は仕事で沖縄だ 2017-04-01
7 つぶやき 今からバイトだ。支度しなきゃ! 2017-04-01
8 友人の結婚式 明日は友達の結婚式だわ! 2017-04-02
9 移動中です 沖縄行の飛行機のなか。ハードだぜ! 2017-04-02
10 お祝儀について 友人のお祝儀は3萬でいいよね? 2017-04-02
11 沖縄旅行に出発 今から沖縄旅行にいってきます! 2017-04-02
12 沖縄めし 沖縄に到着。飯がうまいぜ 2017-04-02
13 沖縄堪能します 仕事はさっさと片付けて沖縄堪能するぞ 2017-04-03
14 友人の結婚式 ドレスがきれいだわ 2017-04-03
15 やばい 財布落とした!!! 2017-04-03
16 結婚式のごはん 結婚式場のごはんっておいしいですよね 2017-04-03
17 どうしよう 財布を拾ってしまった。。。 2017-04-03
18 交番 とりあえず、拾った財布は交番に届けた 2017-04-03
19 結婚式の二次会 おしゃれなイタリアレストランにて 2017-04-03
20 財布ありました 近くの交番に届けられてた。よかったあ 2017-04-03


ArticleUsersテーブルのダミーデータの設計


Articlesテーブルのカラムは【投稿アプリ自作】の第四回目で以下の様に設計しました。

ArticleUsersテーブル
記事を書くユーザを管理するテーブルです。Articlesテーブルとuser_idで1:多に関連を持っています。

カラム名 変数名 補足
ユーザID user_id 主キー
ユーザ名 user_name
パスワード password
性別 gender
メールアドレス mail_address





ArticleUsersテーブルのダミーデータ
このテーブルは記事アプリを利用するユーザの情報を格納します。
ダミーデータは以下の様にしたいと思います。

ユーザID ユーザ名 パスワード 性別 メールアドレス
1 ケン ken12345 k-e-n-0123@ken.com
2 エメリー emily111 e-mi-ly-111@emy.com
3 ボブ bobbob3 boooob123@bob.com


Categoriesテーブルのダミーデータの設計


Categoriesテーブルのカラムは【投稿アプリ自作】の第四回目で以下の様に設計しました。

Categoriesテーブル
記事のカテゴリーを管理するテーブルです。Articlesテーブルとcategory_idで1:多に関連を持っています。

カラム名 変数名 補足
カテゴリーID category_id 主キー
カテゴリー名 category_name





Categoriesテーブルのダミーデータ
カテゴリーテーブルは記事のカテゴリーをまとめています。
ダミーデータは以下の様にしたいと思います。

カテゴリーID カテゴリー名
1 カテゴリーなし
2 食と酒
3 暮らしと生活
4 旅行


Tagsテーブルのダミーデータの設計


Tagsテーブルのカラムは【投稿アプリ自作】の第四回目で以下の様に設計しました。

Tagsテーブル
記事のタグを管理するテーブルです。Articlesテーブルとtag_idで1:多に関連を持っています。

カラム名 変数名 補足
タグID tag_id 主キー
タグ名 tag_name





Tagsテーブルのダミーデータ
タグテーブルは記事のタグをまとめています。
ダミーデータは以下の様にしたいと思います。

タグID タグ名
1 タグなし
2 和食
3 イタリアン
4 冠婚葬祭
5 仕事
6 北海道
7 沖縄




Laravelソースファイルの変更

変更や新規作成するLaravelファイル一覧


Laravelのプロジェクトファイル配下にあるファイルで本記事の中で変更、新規作成するファイルについてまとめました。

ファイル名 対応 備考
1 database/seeds/DatabaseSeeder.php 変更
2 database/seeds/seed/Articles.csv 新規作成 database/seeds/seedディレクトリも新規作成
3 database/seeds/seed/ArticleUser.csv 新規作成 同上
4 database/seeds/seed/Categories.csv 新規作成 同上
5 database/seeds/seed/DetailedArticles.csv 新規作成 同上
6 database/seeds/seed/Tags.csv 新規作成 同上




Seederファイルの変更

まずはSeederファイルを変更します。
Seederファイルは以下のディレクトリに格納されています。

Seederファイルの格納ディレクトリ

database/seeds/

ここに格納されたDatabaseSeeder.phpがSeederファイルになります。
このファイルに各テーブルにダミーデータを格納するように処理を追加します。
また、各ダミーデータはcsvから読み取るようにします。csvの内容については後述します。

DatabaseSeeder.phpを以下の様に変更します。
※このとき$this->call(で呼び出す関数の順番には外部キー制約がついているため注意が必要です。
具体的にはArticleUsersテーブル/Categoriesテーブル/Tagsテーブル => Articlesテーブル => DetailedArticlesテーブル の順番で実行する必要があります。




各csvファイルの新規作成


上で変更したDatabaseSeeder.php内ではcsvファイルを読みだしてダミーデータを設定しています。
本章ではそのcsvファイルについてまとめます。

csvファイルは下記ディレクトリに格納してます。

csvファイルの格納ディレクトリ

database/seeds/seed/





それぞれの内容については下記です。

Articles.csv



1,1,1,1,1
2,1,2,2,3
3,2,1,1,1
4,1,3,2,2
5,3,1,4,6
6,3,2,3,5
7,1,4,3,5
8,2,2,3,4
9,3,3,3,5
10,2,3,3,4
11,1,5,1,1
12,3,4,2,2
13,3,5,3,5
14,2,4,3,4
15,1,6,1,1
16,2,5,2,4
17,3,6,1,1
18,3,7,1,1
19,2,6,2,3
20,1,7,1,1




ArticleUser.csv



1,ケン,ken12345,男,k-e-n-0123@ken.com
2,エミリー,emily111,女,e-mi-ly-111@emy.com
3,ボブ,bobbob3,男,boooob123@bob.com




Categories.csv



1,カテゴリーなし
2,食と酒
3,暮らしと生活
4,旅行




DetailedArticles.csv



1,自己紹介!,はじめまして、ケンです。よろしく!,2017-04-01
2,おすすめイタリアン!,このイタリア料理店おすすめです!,2017-04-01
3,自己紹介です,こんにちは、エミリーです。よろしくです。,2017-04-01
4,おすすめ和食,この和食屋もおすすめです!ぜひ!,2017-04-01
5,北海道旅行,今日は北海道にいます。寒い。。。,2017-04-01
6,最近の仕事,仕事で外回り多い。明日は仕事で沖縄だ,2017-04-01
7,つぶやき,今からバイトだ。支度しなきゃ!,2017-04-01
8,友人の結婚式,明日は友達の結婚式だわ!,2017-04-02
9,移動中です,沖縄行の飛行機のなか。ハードだぜ!,2017-04-02
10,お祝儀について,友人のお祝儀は3萬でいいよね?,2017-04-02
11,沖縄旅行に出発,今から沖縄旅行にいってきます!,2017-04-02
12,沖縄めし,沖縄に到着。飯がうまいぜ,2017-04-02
13,沖縄堪能します,仕事はさっさと片付けて沖縄堪能するぞ,2017-04-03
14,友人の結婚式,ドレスがきれいだわ,2017-04-03
15,やばい,財布落とした!!!,2017-04-03
16,結婚式のごはん,結婚式場のごはんっておいしいですよね,2017-04-03
17,どうしよう,財布を拾ってしまった。。。,2017-04-03
18,交番,とりあえず、拾った財布は交番に届けた,2017-04-03
19,結婚式の二次会,おしゃれなイタリアレストランにて,2017-04-03
20,財布ありました,近くの交番に届けられてた。よかったあ,2017-04-03




Tags.csv



1,タグなし
2,和食
3,イタリアン
4,冠婚葬祭
5,仕事
6,北海道
7,沖縄





Seederの実行

Seederを実行するにはコマンドプロンプトで以下のコマンドを入力します。

 Seeder実行コマンド 
>php artisan db:seed





データベースの確認


データベースが正しく作成されているか確認するため、phpMyAdminにアクセスします。
ブラウザでphpMyAdmin(以下のURL)にアクセスしてください。

phpMyAdminのアクセス先

http://localhost/phpmyadmin

今回の記事で以下の5つのテーブルについてダミーデータを設定したのでそれぞれ確認してきます。
・articles(Articlesテーブル)
・detatiled_articles(DetatiledArticlesテーブル)
・article_users(ArticleUsersテーブル)
・categories(Categoriesテーブル)
・tags(Tagsテーブル)




Articlesテーブルの確認


phpMyAdminの左側にあるメニューでarticles(Articlesテーブル)を選択します。
するとダミーデータの章で設計したデータが格納されていることが分かります。





DetatiledArticlesテーブルの確認


phpMyAdminの左側にあるメニューでdetailed_articles(DetatiledArticlesテーブル)を選択します。
するとダミーデータの章で設計したデータが格納されていることが分かります。





ArticleUsersテーブルの確認


phpMyAdminの左側にあるメニューでarticle_users(ArticleUsersテーブル)を選択します。
するとダミーデータの章で設計したデータが格納されていることが分かります。





Categoriesテーブルの確認


phpMyAdminの左側にあるメニューでcategories(Categoriesテーブル)を選択します。
するとダミーデータの章で設計したデータが格納されていることが分かります。





Tagsテーブルの確認


phpMyAdminの左側にあるメニューでtags(Tagsテーブル)を選択します。
するとダミーデータの章で設計したデータが格納されていることが分かります。


これで設計した通りにダミーデータを作成することができました。

まとめ

この記事では以下の2つについてまとめました。
・Seederファイルの変更
・Sedderを実行してダミーデータの作成

これでダミーデータを作成することができたので、コントローラでデータベースにアクセスしてデータを取得することができます。
ですので、次回は記事を操作するコントローラー(ArticleController.php)を変更して、ダミーデータにアクセスしたいと思います。


次回記事

次回記事はコントローラでデータベースにアクセスし、ダミーデータを画面上に表示する方法についてまとめたいと思います。

【投稿アプリ自作(7)】リレーショナルデータベースからデータを取得・表示する(Laravel)
Webアプリを自作するためにPHPのフレームワークのLaravelを導入することに決めました。 PHP初心者かつLaravel初心者ですが...


前回記事

【投稿アプリ自作(5)】モデルファイルの設定(Laravel)
Webアプリを自作するためにPHPのフレームワークのLaravelを導入することに決めました。 PHP初心者かつLaravel初心者ですが...


まとめページ

【投稿アプリ自作(まとめ)】Laravelで記事投稿アプリを自作する
Laravelの練習がてら記事投稿Webアプリを自作したので、備忘録としてまとめたいと思います。

以上!

スポンサーリンク

フォローする

スポンサーリンク
Powered by YSKTEC.COM