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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2981閲覧

Laravel5.7でシードの作成ができない

minyuu

総合スコア12

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/02/26 13:44

前提・実現したいこと

PHP(Laravel5.7)で掌田 津耶乃 著の「Laravel入門」を参考にしながらシードの作成を行っています。

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

その途中でphp artisan db:seedで実行しようとしたら以下のようなエラーメッセージが出てきました(エラーメッセージ1)。
さらに、それを改善しようとしてcomposer dump-autoloadをやっても以下のようなエラーコードが出てきてしまいます(エラーメッセージ2)。
PHP, Laravelを学習し始めて1年ほどしかたたない未熟者故、対処しかねております。助言の程よろしくお願いいたします。

エラーメッセージ1 [vagrant@localhost myblog]$ php artisan db:seed Seeding: RestdataTableSeeder ReflectionException : Class RestdataTableSeeder does not exist at /home/vagrant/laravel_lessons/myblog/vendor/laravel/framework/src/Illuminate/Container/Container.php:779 775| if ($concrete instanceof Closure) { 776| return $concrete($this, $this->getLastParameterOverride()); 777| } 778| > 779| $reflector = new ReflectionClass($concrete); 780| 781| // If the type is not instantiable, the developer is attempting to resolve 782| // an abstract type such as an Interface or Abstract Class and there is 783| // no binding registered for the abstractions so we need to bail out. Exception trace: 1 ReflectionClass::__construct("RestdataTableSeeder") /home/vagrant/laravel_lessons/myblog/vendor/laravel/framework/src/Illuminate/Container/Container.php:779 2 Illuminate\Container\Container::build("RestdataTableSeeder") /home/vagrant/laravel_lessons/myblog/vendor/laravel/framework/src/Illuminate/Container/Container.php:658 Please use the argument -v to see more details.
エラーメッセージ2 [vagrant@localhost myblog]$ composer dump-autoload Generating optimized autoload files [RuntimeException] File at "/home/vagrant/laravel_lessons/myblog/app/Http/Controllers/BoardController.php" does not ex ist, check your classmap definitions dump-autoload [--no-scripts] [-o|--optimize] [-a|--classmap-authoritative] [--apcu] [--no-dev]

該当のソースコード

ソースコード1 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Restdata extends Model { // protected $table = 'restdata'; protected $guarded = array('id'); public static $rules = array( 'message' => 'required', 'url' => 'required' ); public function getData() { return $this->id . ':' . $this->message . '(' . $this->url . ')'; } }
ソースコード2 <?php use Illuminate\Database\Seeder; use App\Restdata; class RestdataTableSeeder extends Seeder { public function run() { $param = [ 'message' => 'Google Japan', 'url' => 'http://www.google.co.jp', ]; $restdata = new Restdata; $restdata->fill($param)->save(); $param = [ 'message' => 'Yahoo Japan', 'url' => 'https://www.yahoo.co.jp', ]; $restdata = new Restdata; $restdata->fill($param)->save(); $param = [ 'message' => 'MSM Japan', 'url' => 'http://www.msn.com/ja-jp', ]; $restdata = new Restdata(); $restdata->fill($param)->save(); } }
ソースコード3 <?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { // $this->call(UsersTableSeeder::class); $this->call(RestdataTableSeeder::class); } }

試したこと

php artisan make:seeder RestdataTableSeederでシーダーファイルを作成後、DatabaseSeederにこのクラスを登録。その後、問題の「php artisan db:seed」を実行。エラーメッセージ1が発生した。
改善を試みてcomposer dump-autoloadをやるとエラーメッセージ2が発生。

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

PHP Version 7.1.26
Laravel Version 5.7.26
仮想サーバOS CentOS 6.8

Laravel開発環境はドットインストールさんを参考にさせていただきました。そのため、本書に書いてある開発環境ではないです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

取り急ぎ、直接RestdataTableSeederクラスを指定してみてはいかがでしょうか。

php artisan db:seed --class=RestdataTableSeeder

投稿2019/02/26 14:17

kazto

総合スコア7196

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

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

minyuu

2019/02/26 14:23

アドバイスありがとうございます! しかし早速試してみたのですが、やはりエラーメッセージ1が返ってきてしまいます。。。
kazto

2019/02/26 23:09

database/seeds/ディレクトリ内にあるファイル名はどうなっていますでしょうか。
minyuu

2019/02/27 01:56

引き続きお世話になります。ありがとうございます! ``` DatabaseSeeder.php RestdataTableSeeder.php ``` のようになっています。
minyuu

2019/02/27 04:23

どうやら```BoardController.php```が、何かしらの原因で引っかかっていたのが原因だったようです。このファイルは作成しており、実際に編集もできるのですが、なぜか存在していないことになっていますね。。。 しかし、無事解決ができた(?)ので引き続き勉強に励みたいと思います。 ご教授いただき本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問