質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1293閲覧

seederとfactoryでテストデータを用意したい

prodaigo

総合スコア38

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/05/10 03:19

前提

seederとfactoryでテストデータを用意したいです。
php artisan db:seedを実行した際に、エラーが発生するので、解決方法や解決につながる意見が欲しいです。
かなりレベルの低い質問かもしれませんがよろしくお願いします。

実現したいこと

  • エラーの解消

発生している問題・エラーメッセージ

Seeding: Database\Seeders\BlogsTableSeeder BadMethodCallException Call to undefined method App\Models\Blog::factory() at vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:71 67▕ * @throws \BadMethodCallException 68▕ */ 69▕ protected static function throwBadMethodCallException($method) 70▕ { ➜ 71▕ throw new BadMethodCallException(sprintf( 72▕ 'Call to undefined method %s::%s()', static::class, $method 73▕ )); 74▕ } 75▕ } +3 vendor frames 4 database/seeders/BlogsTableSeeder.php:18 Illuminate\Database\Eloquent\Model::__callStatic("factory", []) +8 vendor frames 13 database/seeders/DatabaseSeeder.php:20 Illuminate\Database\Seeder::call("Database\Seeders\BlogsTableSeeder")

該当のソースコード

BlogFactory.php

1<?php 2 3namespace Database\Factories; 4 5use Illuminate\Database\Eloquent\Factories\Factory; 6use App\Models\Blog; 7 8/** 9 * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Blog> 10 */ 11class BlogFactory extends Factory 12{ 13 /** 14 * Define the model's default state. 15 * 16 * @return array<string, mixed> 17 */ 18 public function definition() 19 { 20 return [ 21 'title' => $this->faker->word(), 22 'content' => $this->feker->realText() 23 ]; 24 } 25}

BlogsTableSeeder.php

1<?php 2 3namespace Database\Seeders; 4 5use Illuminate\Database\Console\Seeds\WithoutModelEvents; 6use Illuminate\Database\Seeder; 7use App\Models\Blog; 8 9class BlogsTableSeeder extends Seeder 10{ 11 /** 12 * Run the database seeds. 13 * 14 * @return void 15 */ 16 public function run() 17 { 18 Blog::factory()->count(15)->create(); 19 } 20}

DatabaseSeeder.php

1<?php 2 3namespace Database\Seeders; 4 5use Illuminate\Database\Console\Seeds\WithoutModelEvents; 6use Illuminate\Database\Seeder; 7use App\Models\Blog; 8 9 10class DatabaseSeeder extends Seeder 11{ 12 /** 13 * Seed the application's database. 14 * 15 * @return void 16 */ 17 public function run() 18 { 19 $this->call([ 20 BlogsTableSeeder::class, 21 ]); 22 } 23}

試したこと

https://readouble.com/laravel/9.x/ja/database-testing.html
https://readouble.com/laravel/9.x/ja/seeding.html
2つの公式レファレンスをもとに記述の確認を行いました

補足情報(FW/ツールのバージョンなど)

Laravel Framework 9.10.1
PHP version 8.0.8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

2点の変更で解決できました。

BlogFactory.php

1// 省略 2- 'content' => $this->feker->realText() 3+ 'content' => $this->faker->realText()

Blog.php

1<?php 2 3namespace App\Models; 4 5use Illuminate\Database\Eloquent\Factories\HasFactory; 6use Illuminate\Database\Eloquent\Model; 7 8class Blog extends Model 9{ 10 // 追加 11 use HasFactory; 12 13 // テーブル名 14 protected $table = 'blogs'; 15 16 // 可変項目 17 protected $fillable = 18 [ 19 'title', 20 'content' 21 ]; 22}

投稿2022/05/11 13:45

prodaigo

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問