Laravelでの「php artisan db:seed」がうまくいきません。
https://blog.hiroyuki90.com/articles/laravel-bbs/
この記事を参考に進めていましたが、かなり最初の段階で詰まりました。
環境 さくらレンタルサーバー(スタンダード)
php 7.2
Mysql 5.7
laravel 5.7.19
ファクトリーを作ります。
$ php artisan make:factory PostFactory --model=Post
$ php artisan make:factory CommentFactory --model=Comment
<?php use Faker\Generator as Faker; $factory->define(App\Post::class, function (Faker $faker) { return [ 'title' => '投稿のタイトル', 'body' => "本文です。テキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。\nテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。テキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。", ]; }); # database/migrations/UserFactory.php <?php use Faker\Generator as Faker; $factory->define(App\Comment::class, function (Faker $faker) { return [ 'body' => "コメントです。テキストテキストテキストテキストテキストテキスト。\nテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト。", ]; });
実行用のシーダークラスを作成します。
$ php artisan make:seeder PostsTableSeeder
database/seeds/PostsTableSeeder.php
1<?php 2 3use Illuminate\Database\Seeder; 4use App\Post; 5use App\Comment; 6 7class PostsTableSeeder extends Seeder 8{ 9 /** 10 * Run the database seeds. 11 * 12 * @return void 13 */ 14 public function run() 15 { 16 factory(Post::class, 50) 17 ->create() 18 ->each(function ($post) { 19 $comments = factory(App\Comment::class, 2)->make(); 20 $post->comments()->saveMany($comments); 21 }); 22 } 23}
database/seeds/DatabaseSeeder.php
1<?php 2 3use Illuminate\Database\Seeder; 4 5class DatabaseSeeder extends Seeder 6{ 7 /** 8 * Seed the application's database. 9 * 10 * @return void 11 */ 12 public function run() 13 { 14 $this->call(PostsTableSeeder::class); 15 } 16} 17
そして実行。
$ composer dump-autoload
$ php artisan db:seed
エラー
Seeding: PostsTableSeeder Symfony\Component\Debug\Exception\FatalThrowableError : Class 'Post' not found at /home/paisen1/www/paisen2/laravel/bbs/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:228 224| if ($this->amount < 1) { 225| return (new $this->class)->newCollection(); 226| } 227| > 228| $instances = (new $this->class)->newCollection(array_map(function () use ($attributes) { 229| return $this->makeInstance($attributes); 230| }, range(1, $this->amount))); 231| 232| $this->callAfterMaking($instances); Exception trace: 1 Illuminate\Database\Eloquent\FactoryBuilder::make([]) /home/paisen1/www/paisen2/laravel/bbs/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:178 2 Illuminate\Database\Eloquent\FactoryBuilder::create() /home/paisen1/www/paisen2/laravel/bbs/database/seeds/PostsTableSeeder.php:15 Please use the argument -v to see more details.
エラー内容もわかりませんし、調べても「composer dump-autoload」としろ、という記事ばかりで困っております。
「composer dump-autoload」は実行しました。
実行結果↓
Generating optimized autoload files> Illuminate\Foundation\ComposerScripts::postAutoloadDump
@php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 3747 classes
よろしくお願いします。
もしかして、Laravelインストール後に親ディレクトリの名前を変更しましたが、それが関係していますか・・・?
「laravel_bbs』→「bbs」
クラスファイルもアップしておきます。
app/Post.php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Post extends Model 8{ 9 protected $fillable = [ 10 'title', 11 'body', 12 ]; 13 14 public function comments() 15 { 16 return $this->hasMany('App\Comment'); 17 } 18} 19
app/Comment.php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Comment extends Model 8{ 9 protected $fillable = [ 10 'body', 11 ]; 12 13 public function post() 14 { 15 return $this->belongsTo('App\Post'); 16 } 17} 18
回答1件
あなたの回答
tips
プレビュー