laravel version 8です
https://blog.hiroyuki90.com/articles/laravel-bbs/#i
を参考に入力しているのですが、いろんな記事をみていて、バージョンの変更により、factoryが定義されないとされたので、このようにコードを変更したのですが、またもや同じエラーがでてきてしまいました。
エラー内容
Seeding: Database\Seeders\PostsTableSeeder BadMethodCallException Call to undefined method App\Models\Post::factory() at vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50 46▕ * @throws \BadMethodCallException 47▕ */ 48▕ protected static function throwBadMethodCallException($method) 49▕ { ➜ 50▕ throw new BadMethodCallException(sprintf( 51▕ 'Call to undefined method %s::%s()', static::class, $method 52▕ )); 53▕ } 54▕ } • Bad Method Call: Did you mean App\Models\Post::toArray() ? +3 vendor frames 4 database/seeders/PostsTableSeeder.php:18 Illuminate\Database\Eloquent\Model::__callStatic("factory", []) +7 vendor frames 12 database/seeders/DatabaseSeeder.php:17 Illuminate\Database\Seeder::call("Database\Seeders\PostsTableSeeder")
変更前
factory(Post::class, 50) ->create() ->each(function ($post) { $comments = factory(App\Comment::class, 2)->make(); $post->comments()->saveMany($comments); });
変更後
\App\Models\Post::factory()->count(50)->create() ->each(function ($post) { $comments = \App\Models\Comment::factory()->count(2)->make(); $post->comments()->saveMany($comments);
うーん、わかりません。
基礎的なところが抜けているのは重々承知なのですが、ご教授いただけると嬉しいです!!
PostsTableSeeder.php
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use App\Models\Post; use App\Models\Comment; class PostsTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { \App\Models\Post::factory()->count(50)->create() ->each(function ($post) { $comments = \App\Models\Comment::factory()->count(2)->make(); $post->comments()->saveMany($comments); }); } }
Comment.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Comment extends Model { protected $fillable = [ 'body', ]; public function post() { return $this->belongsTo('App\Models\Post'); } }
Post.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = [ 'title', 'body', ]; public function comments() { return $this->hasMany('App\Models\Comment'); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/01/08 13:27