ここまでで Laravel9をインストール して、とりあえず Breezeをインストール しました。
続いてLaravelの学習を進めてゆきたいと思います。
参考書籍
このあと以下のkindle本を参考にしながらLaravelの基礎を復習してみたいと思っています。
このLaravelの教科書はKindle Unlimited 対象のkindle本で、月額980円のKindle Unlimitedに加入していたら追加費用無しで読めるのでおすすめです。
この本では、家計簿アプリを作りながらLaravelの学習を進めていますが、少し複雑なので簡単なメモアプリを作っていこうと思います。
モデルの作成
まずはメモデータのモデルを作ります。
アプリケーションフォルダで
sail php artisan make:model -m Book
以下の2ファイルが作成されます。
App\Models\Book.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
use HasFactory;
}
databese\migrations\作成日_create_books_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('books');
}
}
作成日_create_books_table.php の public function up() に使いたいカラムを追加。
今回は ‘title’ と ‘content’ を追加します。
‘id’は自動増分IDとして bigIncrements(‘id’) とします。
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->bigIncrements('id'); //変更
$table->string('title'); //追加
$table->text('content'); //追加
$table->timestamps();
});
}
作成日_create_books_table.php 保存して、テーブルを作成するために以下のコマンド。
php artisan migrate
http://localhost:8080/ を開いて phpMyAdmin で bookテーブルが作成されていることを確認します。
ダミーデータの追加
Bookテーブルにダミーデータを追加します。
Seederファイルの作成
sail php artisan make:seeder BookTableSeeder
database/seeders/BookTableSeeder.php が作成されます。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Book; // 追記
class BookSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Book::factory()->count(5)->create(); // 追記
}
}
factoryの作成の前に、ダミーデータで日本語が使えるよう設定を変更しておきます。
config/app.php
'faker_locale' => 'ja_JP', //変更
factoryを作成します。
sail php artisan make:factory BookFactory
database/factories/BookFactory.php が作成されます。
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Book; //追加
class BookFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->word(), //追加
'content' => $this->faker->realText() //追加
];
}
}
database/seeders/DatabaseSeeder.php を変更します。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create();
$this->call(BookTableSeeder::class); //追加
}
}
seederを実行します。
sail php artisan db:seed
phpMyAdminでbookテーブルにダミーデータが追加されたか確認しておきます。
fakerについての補足
今回のダミーデータ作成に関しては、「faker.js」というオープンソースのライブラリが使われています。
この「faker.js」、今年の初めに、開発者であるマラック・スクワイアーズ氏が、それらの最新バージョンに無限ループ処理を仕込むなど、意図的な改ざんを加えたバージョンをリリースしたことが、ニュースになっていました。
ただ程なくして、「Faker.js」は、コミュニティ主導のプロジェクトに変更されています。
それに伴って「Faker.js」では寄付を募集しているとのことなので、 「Faker.js」 を気に入って今後も使っていきたい場合には、寄付するのも良いかもしれません。