こんにちは!
PHPのLaravelやJavaScriptでWeb開発をしているフリラーンスエンジニアのファドと申します!
こちらの記事はLaravel教材の第2回目の記事になります。
その他のLaravel教材を学習したい方は下記リンクから直接教材へ飛ぶことができます。
-
Laravel教材
【Laravel教材①】ブログシステムを実装しながらLaravelの基礎を徹底的に学ぶ!〜環境構築編〜
-
Laravel教材
【Laravel教材③】Laravelでブログシステム構築!〜MVCモデル解説から画面の共通化編〜
-
Laravel教材
【Laravel教材④】Laravelでブログシステム構築!〜全記事一覧画面実装から記事詳細画面実装編〜
-
Laravel教材
【Laravel教材⑤】Laravelでブログシステム構築!〜記事投稿機能実装編〜
-
Laravel教材
【Laravel教材⑥】Laravelでブログシステム構築!〜記事編集機能実装編〜
-
Laravel教材
【Laravel教材⑦】Laravelでブログシステム構築!〜記事削除機能実装編〜
phpMyAdminのインストール
次に、データベースを操作するためのphpMyAdmin
をインストールしていきましょう!
まず、Laravel Sailで作成したfirst-app
フォルダをVSCodeで開いてみましょう。
その中にdocker-compose.yml
ファイルがあるのでそちらを編集していきます。
ちなみに、このdocker-compose.yml
ファイルはLaravel Sailで開発環境を構築した場合に作成されるファイルで、このファイルにDocker
の設定が記述されています。
それでは、docker-compose.yml
ファイルを下記のように編集してください。
# For more information: https://laravel.com/docs/sail
version: '3'
services:
# --- ここから追加 ---
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8888:80
environment:
PMA_HOST: mysql
networks:
- sail
# --- ここまで追加 ---
laravel.test:
# --- 以下省略 ---
追加部分のみを抜粋すると下記の通りです。
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8888:80
environment:
PMA_HOST: mysql
networks:
- sail
ポイントは、追加部分のコードをservices:
の下に記述することです。
また、インデントをservices:
より1つ下げてください。docker-compose.yml
では、インデントがしっかりしていないとエラーになるので気を付けてください。
無事にコードの追加が終わった方は、ターミナルで下記コマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail up -d
実行が完了したら、http://localhost:8888/へアクセスしてください。
下記のような画面が出てくれば、phpMyAdminのインストールは完了です。
★検索ワード
・Laravel sail phpMyAdmin 導入
各URL&コマンド一覧
これで全ての環境構築が完了しました。
開発を始める前に、各URLとコマンドを改めて確認しましょう。
Laravel画面URL
phpMyAdmin画面URL
first-appディレクトリへ移動
sail upコマンド
やsail stop
コマンドなど、これから出てくるsailコマンド
は必ずfirst-app
配下で行ってください。
なぜなら、sailコマンド
を実行するためのファイルはfirst-app
ディレクトリに存在するためです。
他のディレクトリ配下でsailコマンド
を実行しても、no such file or directory: ./vendor/bin/sail
などのエラーが出てしまいます。
そうならないためにもターミナル
やubuntu
ではfirst-app
ディレクトリに移動する必要があります。
そのためのコマンドは下記の通りです。
Macの場合
ターミナル
を開いて下記コマンドの実行
$ cd ~/Desktop/Laravel/first-app
Windowsの場合
Ubuntu
を開いて下記コマンドの実行
$ cd ~/Laravel/first-app
Sail upコマンド
開発を始める場合は、ターミナルで下記コマンドを実行してください。
$ .vendor/bin/sail up -d
Sail stopコマンド
開発を終了する場合は、ターミナルで下記コマンドを実行してください。
$ .vendor/bin/sail stop
Laravelのディレクトリ構成
Laravelでの開発環境構築が無事に終了したので、さっそくLaravelについて学習していきましょう。
Laravelをダウンロードして最初に驚くことの1つとして、ダウンロードされたフォルダとファイルの多さです。
これほどまでに多くのフォルダとファイルがダウンロードされた理由は、それら全てがLaravelでアプリケーションを開発するために必要な機能を担っているからです。
それらのフォルダやファイルがどのような役割なのかをざっくり把握してもらうために、まずはLaravelのディレクトリ構成から説明してきます。
教材で説明するディレクトリ構成と実際にダウンロードしたfirst-app
を見比べるために、first-app
をVSCodeで表示しましょう。
Laravelをインストールすると下記のようなディレクトリ構成になっています。
firstapp
├── app
├── bootstrap
├── config
├── database
├── lang
├── public
├── resources
├── routes
├── storage
├── tests
├── vendor
└── その他ファイル(.envやwebpack.mix.jsなど)
それでは、各ディレクトリを簡単に説明していきます。
app
アプリケーションのコアとなるディレクトリです。
Laravelを使用した開発では、主にapp
ディレクトリ内のファイルを操作することでアプリケーションを構築していきます。
bootstrap
フレームワークの初期処理を担っているディレクトリです。
基本的にこちらのbootstrap
ディレクトリ内のファイルを操作することはありません。
config
アプリケーションの設定ファイルを置くディレクトリです。
アプリケーションの設定を追加、変更、削除をする場合に操作します。
database
データベースの内容変更やテストデータを作成するような機能が格納されているディレクトリです。
lang
言語ごとの設定をすることができるディレクトリです。
現状はあまり操作することはありません。
public
CSSやJavaScript、画像ファイルなどが入ってるディレクトリです。
resources
CSSやJavaScript、BladeというHTMLのような特有のテンプレートファイルを格納するディレクトリです。
routes
アプリケーションのURL設定などを行うディレクトリです。
strage
キャッシュファイルやログファイルなどが格納されるディレクトリです。
tests
PHPUnitという自動テストファイルなどを格納するディレクトリです。
vendor
Composerの依存内容が格納されているディレクトリです。
以上がLaravelのディレクトリ構成となっています。
現段階でどのディレクトリがどのような働きをしているのかをわざわざ暗記する必要は全くありません。
これからLaravelの学習を行うにあたって、徐々に何がどこにあるかを把握していきましょう!
★検索ワード
・Laravel ディレクトリ構成
データベース接続
以前のレクチャーでphpMyAdminをインストールしているので、さっそくデータベースへ接続してみましょう。
http://localhost:8888/へアクセスすると、下記の通りphpMyAdminのログイン画面になります。
Laravelではデータベースへの接続情報を.env
というファイルで管理しています。
まずはfirst-app/.env
ファイルをVSCodeで開きましょう。
すると下記のようにたくさんの設定が記述されています。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:IRagpojO8u1OxSEJJKG5LYdpOwUMwi1sHn+CukKEuS0=
APP_DEBUG=true
APP_URL=http://first-app.test
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=first_app
DB_USERNAME=sail
DB_PASSWORD=password
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=memcached
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://meilisearch:7700
この.env
ファイルには、データベースへの接続情報だけではなくLaravelの設定内容が色々記述されています。
その中でデータベースの情報は下記の部分です。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=first_app
DB_USERNAME=sail
DB_PASSWORD=password
DB_******
となっている部分がデータベースの設定情報ですが、DB
はデータベースの略です。
とても覚えやすいですね!
上記コードの中にDB_USERNAME
がsail
、DB_PASSWORD
がpassword
と記述されているので、phpMyAdminのユーザー名にsail
、パスワードにpassword
とそれぞれ入力してログイン
をクリックしてください。
また、DB_DATABASE
がfirst_app
と記述されているので、今回使用するデータベース名はfirst_app
ということになります。
Laravel Sailで環境構築をした場合、すでにデータベースは下記画像のように作成されているので、データベースへの接続確認は以上で終了になります。
★検索ワード
・Laravel phpMyAdmin 使い方
Laravelの初期設定
Laravelプロジェクトを作成した直後にやっておいたほうが良い初期設定
を行っていきます。
初期設定で行うことは以下の2つです。
- アプリケーション名の変更
- タイムゾーンと言語設定
アプリケーション名の変更
はじめにアプリケーション名を任意の名前に変更しておきましょう。
Laravelのアプリケーション名は以前データベースの設定を確認したfirst-app/.env
ファイルで設定します。.env
ファイルを下記のように変更してください。
# APP_NAME=Laravelから下記に変更
APP_NAME="ブログシステム"
APP_ENV=local
# --- 以下省略 ---
Laravelをインストールした直後の名前はLaravel
になっています。
それを、今回開発するブログシステム
という名前に変更しましょう。
ちなみに、日本語にする場合や半角スペースを入れたい場合は"(ダブルクオーテーション)
で囲みます。
タイムゾーンと言語設定
次に、日本時間の設定と言語設定を日本語に変更します。
これらの設定はfirst-app/config/app.php
で設定されているので、そちらのファイルを開いてください。
app.php
を下記の通り変更してください。
// 'timezone' => 'UTC'から下記に変更(72行目付近)
'timezone' => 'Asia/Tokyo',
// 'locale' => 'en'から下記に変更(85行目付近)
'locale' => 'ja',
// 'faker_locale' => 'en_US'から下記に変更(111行目付近)
'faker_locale' => 'ja_JP',
app.php
はかなりコード量が多いですが、各変更前のコードをVSCode上で文字列検索すると簡単に見つけることができます。
VScodeでの文字列検索方法は下記の通りです。
まずVScodeで対象ファイルを開いてください。
開いたらご自身のOSに合ったキーボードのキーを押してください。
・Mac:Command
+ f
・Windows:Ctrl
+ f
変更したコードはそのままの意味ですが、意味は下記の通りです。'timezone' => 'Asia/Tokyo',
としましたが、日本時間に設定しています。'locale' => 'ja',
としましたが、言語設定を英語から日本語に設定しています。'faker_locale' => 'ja_JP'
としましたが、テストデータを作る際に日本語で作成してくれる設定をしています。
これでファイルの変更は終わりです。
最後にターミナルで下記2つのコマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail php artisan cache:clear
$ ./vendor/bin/sail php artisan config:clear
実行後は下記画像のようになります。
これらのコマンドを実行することで、先ほど変更した内容がアプリケーションへ確実に反映されるようになります。.env
ファイルやapp.php
などを変更した場合は、上記コマンドを実行してください。
以上で初期設定は終わりです。
★検索ワード
・Laravel 初期設定
・Laravel アプリケーション名変更
・Laravel 日本時間設定
マイグレーション(migration)
Laravelには、データベースのテーブル作成や編集などを管理する方法としてマイグレーション
という機能が用意されています。
今回はそのマイグレーション機能を使用して、テーブル作成やテーブル設定を行っていきます。
マイグレーションでテーブルを作成するための手順は、下記3段階に分けることができます。
- マイグレーションファイルの作成
- マイグレーションファイルにテーブル定義を記述
- マイグレーションの実行
マイグレーションファイルはどんなテーブルを作成するのか
を定義する設計書のようなものです。
また、設計書を作成した後に設計書に基づいて作成作業をしなければテーブルは完成しません。
この作成作業に当たる部分がマイグレーションの実行
というわけです。
マイグレーションファイルの作成
まず、1つのテーブルを作成するのに必要なマイグレーションファイルは1つ
だということを覚えておいてください。
マイグレーションファイルはターミナルからコマンド1つ
で作成することができます。
コマンドは以下の通りです。
$ php artisan make:migration create_テーブル名(名詞の複数形)_table
今回はLaravel Sailで開発環境を構築しているので、下記のようなコマンドになります。
$ ./vendor/bin/sail php artisan make:migration create_テーブル名(名詞の複数形)_table
本来Laravelが用意しているコマンドはphp artisan
から始まります。
しかし、Laravel Sailで開発環境を構築した場合は./vendor/bin/sail php artisan
となるので注意してください。
また、テーブル名のところは作成するテーブル名を複数形
で入力してください。
今回は記事テーブルを作成するのでarticlesテーブル
として作成します。
それでは、ターミナルで下記コマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail php artisan make:migration create_articles_table
Created Migration: 2022_06_03_182626_create_articles_table
などと出力されればマイグレーションファイルの作成は完了です。
ちなみに、2022_06_03_182626
の部分は作成日時になるので、皆さんが作成したファイルでは異なる時間となっているはずです。
マイグレーションファイルの構成
作成したarticlesテーブル
のマイグレーションファイルは、first-app/database/migrations
の中に存在し、先ほど作成した2022_06_03_182626_create_articles_table.php
もfirstapp/database/migrations
の中に入っています。
また、Laravelのバージョンによっても異なりますが、デフォルトで下記のマイグレーションファイルが存在します。
- 2014_10_12_000000_create_users_table.php
- 2014_10_12_100000_create_password_resets_table.php
- 2019_08_19_000000_create_failed_jobs_table.php
- 2019_12_14_000001_create_personal_access_tokens_table.php
これらデフォルトで存在するマイグレーションファイルのほとんどは、ログイン機能を実装する場合などに使用します。
今回の学習では使用しないので4つとも削除してしまってもOKです。
それでは、実際に作成した2022_06_03_182626_create_articles_table.php
をVScodeで開いて中身を確認してみましょう。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
};
まず、マイグレーションファイルはMigrationクラス
を継承したクラスです。
このMigrationクラス
を継承していることで、Laravelの機能であるマイグレーションを使用することができます。
また、マイグレーションファイルの中にはupメソッド
とdownメソッド
があります。upメソッド
が実行(作成)するメソッドなので、このメソッドの中にテーブル定義を記述していきます。
一方でdownメソッド
は基本使用しませんが、元に戻す(削除)処理を記述することができます。
また、public function up(){}
やpublic function down(){}
となっていますが、これらは関数のことです。
Laravelでは関数のことをメソッド
と呼ぶのでそちらも合わせて覚えておいてください。
upメソッド
の中を見てみると、Schema::create()
と記述しています。
このSchema::create()
の()
内でテーブル名やカラムの定義をしていくことになります
まずSchema::create('articles')
と記述されている部分ですが、この第一引数であるarticles
がテーブル名となります。
また、第二引数でfunction (Blueprint $table) {}
と記述されていますが、LaravelではBlueprint
という機能を使用してカラムを作成していきます。
{}
内を確認すると、すでに$table->id();
と$table->timestamps();
が記述されています。
これら2つのコードは、テーブルがほぼ必ず持っているといっても過言ではない3つのカラムを生成することができます。
$table->id();
でidカラム
、$table->timestamps();
でcreated_atカラム
とupdated_atカラム
という作成日時と更新日時のカラム3つを生成することができます。
これらのデフォルトのコードに、作成するカラムの記述をプラスしてテーブル定義を定義していきます。
マイグレーションファイルの記述
マイグレーションファイルを使用してカラムを追加する場合、基本$table->カラムタイプ('カラム名')
という形でカラム定義を記述します。
ちなみに使用できるカラムタイプはドキュメントに全て載っています。
どのようなカラムがあるのか気になる方は、こちらのドキュメントの利用可能なカラムタイプ
を参照してください。
下記画像はドキュメントの利用可能なカラムタイプ
をスクショしたものですが、そちらからもわかるように先ほど確認したid
もtimestamps
もありますね!
ドキュメントに利用可能なカラムは全て載っているので、暗記せずに使いながら覚えていきましょう!
そもそもバージョンの違い等で利用可能なカラムは変わる場合もあるので、全てを暗記している人はいません!
では、実際にarticles
テーブルの定義を記述していきましょう。2021_12_15_140034_create_articles_table.php
を下記の通り記述してください。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title', 100); // ここを追加
$table->text('content'); // ここを追加
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
};
追加したコードは下記の2行です。
$table->string('title', 100);
$table->text('content');
$table->string('title', 100);
とすることでtitle
というカラム名の100文字
という文字数制限があるカラムを生成します。$table->text('content');
とすることでcontent
というカラム名の文字数制限がないカラムを生成します。
これでブログシステムに必要な記事のタイトル(titleカラム)
と内容(contentカラム)
を保存できるarticlesテーブル
を作成することができます。
マイグレーションの実行
マイグレーションファイルの記述が終わったので、実際にコマンドでマイグレーションの実行をしていきましょう。
ターミナルで下記コマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail php artisan migrate
下記のような実行結果が返ってくれば成功です。
Migration table created successfully.
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (81.27ms)
Migrating: 2022_05_30_144855_create_articles_table
Migrated: 2022_05_30_144855_create_articles_table (42.16ms)
では、テーブルが作成されているのかをphpMyAdmin
にて確認してみましょう。
http://localhost:8888/へアクセスして、データベースfirst_app
の中に、articlesテーブル
とmigrationsテーブル
、personal_access_tokensテーブル
の3つが作成されていればOKです。
※デフォルトのマイグレーションファイルを削除していない方はusersテーブル
やpassword_resetsテーブル
なども一緒に作成されますが、そのままで大丈夫です。
ちなみにmigrationsテーブル
はマイグレーションをした履歴が保存されるテーブルです。
また、先ほどデフォルトのマイグレーションファイルは全て削除しましたが、personal_access_tokensテーブル
は自動的に作成されてしまいます。
これらのテーブルは自動的に作成されるものなので、そのままで大丈夫です。
★検索ワード
・Laravel マイグレーション
・Laravel マイグレーションファイル作成
テストデータの作成
Laravelには、データベースにテストデータを作成するためのシーダー(seeder)
という機能が用意されています。
今回はそのシーダーを使用してテストデータの準備をしていきます。
シーダーでテストデータを作成するための手順は、下記4段階に分けることができます。
- シーダーファイルの作成
- シーダーファイルにデータ内容を記述
- シーダーファイルの登録
- シーダーの実行
それでは上記手順に沿って、テストデータを作成してみましょう。
シーダーファイルの作成
シーダーファイルもマイグレーションファイル同様、1コマンドで作成することができます。
コマンドは下記の通りです。
$ ./vendor/bin/sail php artisan make:seeder テーブル名TableSeeder
それでは、ターミナルで下記コマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail php artisan make:seeder ArticlesTableSeeder
今回はarticles
テーブルのテストデータを作成するので、ArticlesTableSeeder
となります。
※ArticlesTableSeeder
とテーブル名の1文字目がA
と大文字になっていることに注意してください。
Seeder created successfully.
と出力されればシーダーファイルの作成は完了です。first-app/database/seeders
配下にArticlesTableSeeder.php
が作成されていればOKです。
シーダーファイルの記述
それでは作成したArticlesTableSeeder.php
をVSCodeで開いて中身を確認してみましょう。
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
まず、シーダーファイルはSeederクラス
を継承したクラスです。
このSeederクラス
を継承していることで、Laravelの機能であるシーダーを使用することができます。
また、シーダーファイルはデフォルトでrunメソッド
を含んでいます。
このrunメソッド
内に、データベースへ入れるデータの内容を記述することでテストデータを作成することができます。
それでは、さっそくテストデータ作成のための編集を行っていきましょう。
下記のようにfirst-app/database/seeders/ArticlesTableSeeder.php
を編集してください。
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; // ここを追加
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// --- ここから追加 ---
DB::table('articles')->insert([
'title' => '1番目の投稿',
'content' => 'これは1番目の投稿のテストデータです',
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
DB::table('articles')->insert([
'title' => '2番目の投稿',
'content' => 'これは2番目の投稿のテストデータです',
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
DB::table('articles')->insert([
'title' => '3番目の投稿',
'content' => 'これは3番目の投稿のテストデータです',
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
// --- ここまで追加 ---
}
}
では、記述したコードの説明をしていきます。
まず、use Illuminate\Support\Facades\DB;
を記述することで、DBファサード
という機能を使えるようにしています。ファサード
という機能はとても難しい概念なので、まずはDBファサードを使用することでデータベースに関連した作業ができるというイメージだけを持っていただければ大丈夫です。
次に、DB::table('テーブル名')->insert([追加するデータ群]);
と記述することで記述したテーブル名のテーブルへデータを追加することができるようになります。
ちなみに追加するデータは'カラム名' => '追加するデータ'
と記述します。articlesテーブル
にはtitle
とcontent
という2つのカラムが存在しているので、それぞれに追加するデータを入れ、created_at
とupdated_at
にdate('Y-m-d H:i:s')
と記述することで、現在の日時を入れる処理をしています。idカラム
には作成した順に自動的に番号が入るので指定しなくてOKです。
これでシーダーファイルの編集は終わりです。
シーダーファイルの登録
作成したシーダーファイルは、実行するためにDatabaseSeeder.php
へ登録することが必要です。
登録の仕方は下記の通りです。database/seeders/DatabaseSeeder.php
を下記の通り編集してください。
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(ArticlesTableSeeder::class); // ここを追加
// \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
}
}
作成したシーダーファイルをDatabaseSeeder.php
へ登録するときは、$this->call(シーダークラス::class)
と記述するだけです。
今回作成したシーダーファイルはArticlesTableSeeder.php
でクラス名はArticlesTableSeederクラス
となっているので、$this->call(ArticlesTableSeeder::class);
となります。
シーダーファイルの実行
最後にシーダーファイルを実行していきましょう。
ターミナルで下記コマンドをfirst-app
ディレクトリ上で実行してください。
$ ./vendor/bin/sail php artisan db:seed
下記のような実行結果が返ってくれば成功です。
Seeding: Database\Seeders\ArticlesTableSeeder
Seeded: Database\Seeders\ArticlesTableSeeder (52.20ms)
Database seeding completed successfully.
では、実際にデータが作成されているのかをhttp://localhost:8888/へアクセスして、phpMyAdmin
にて確認してみましょう。
下記画像のように、データベースfirst_app
のarticlesテーブル
に3つのレコードが登録されていればOKです。
これでテストデータの作成は完了です。
システムの実装より先にテストデータをに作成しておくことで、実装時に動作確認などがしやすくなるので、シーダーでのテストデータ作成は覚えておきましょう。
★検索ワード
・Laravel シーダーファイル作成
・Laravel テストデータ作成
次の教材
次の教材は下記から簡単に飛ぶことができます!
引き続きプログラミングを楽しんでいきましょう!
プログラミング学習サポートについて
「独学で挫折した。。。」
「一人でのプログラミング学習がしんどい。。。」
「未経験からエンジニア転職をしたいけど何をしたら良いかわからない。。。」
このような悩みをお持ちの方向けに、本教材作成者のファドがMENTAという学習サイトにてあなたのプログラミング学習とエンジニア転職を徹底サポートいたします!
サポート価格はなんと1日あたりたったの約300円!
教材で分からない箇所のサポートはもちろんのこと、本サイトで公開しているすべての課題の解答も公開しております。
また、MENTAで学習を終わらせていただいた方限定で懇意にしていただいている企業さんを紹介することもあります!
なお、サポート内容の詳細は下記の通りです。
- 目標設定
- マインドセット
- オリジナル教材見放題
- オリジナル課題見放題
- オリジナル課題の解答見放題
- 課題コードレビュー
- 教材への無制限質問
- 課題への無制限質問
- ポートフォリオ作成アドバイス
- 褒めのコーチング
いくつかのプランを用意させていただいておりますので、下記より一度ご覧ください!
コメント