すぐに、php artisan db:seed
コマンドを入力しています。
私はErrorを得ています
[ReflectionException]
クラスUserTableSeederは存在しません
root@dd-desktop:/opt/lampp/htdocs/dd/laravel# php artisan db:seed
ここに、私のUserTableSeeder.php
とDatabaseSeeder.php
ページがあります
UserTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class UserTableSeeder extends Seeder
{
public function run()
{
DB::table('users')->delete();
User::create(array(
'name' => 'Chris Sevilleja',
'username' => 'sevilayha',
'email' => '[email protected]',
'password' => Hash::make('awesome'),
));
}
}
DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//Model::unguard();
Eloquent::unguard();
$this->call('UserTableSeeder');
//$this->call(UserTableSeeder::class);
//Model::reguard();
}
}
これを参照しています リンク ログインページの設計と開発へ。この問題を解決するのを手伝ってください。ありがとう。
composer update
を実行してから、composer dump-autoload
を実行します。
上記で問題が解決しない場合、プロジェクト相対パスを含むようにcomposer.json
ファイルのclassmap
を変更しますあなたのPHPファイルに:
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"database/seeds/UserTableSeeder.php" //include the file with its path here
]
}, /** ... */
その後すぐにcomposer dump-autoload
を実行すると、breeze!のように動作するはずです。
composer dump-autoload
が見つからない場合は、このオプションcomposer config -g -- disable-tls true
を有効にしてください。
私の経験から、これはほとんどの場合、呼び出そうとしているクラスにバグがあり、コンパイルできないときに表示されます。反映されていないクラスが独自に実行できるかどうかを確認してください。
composer dump-autoload
で修正する必要があります。
この問題があり、php artisan config:cache
を実行することで解決できました。問題は、以前にコマンドを実行し、後で新しいシーダークラスが含まれていたことです。キャッシュされた構成は、新しいクラスを認識しませんでした。したがって、そのコマンドを再度実行すると機能しました。
新しいシーダークラスを含めるために頻繁に変更する場合は、php artisan config:clear
の実行を検討してください。これにより、必要な数だけ変更を加えることができ、テスト後にconfig:cache
を再度実行して、最適に実行できるようになります。
何らかの理由で、composer dumpautoload -o
を実行する必要がありました。最適化を意味するフラグ-o
に注意してください。なぜそれだけで機能するのかはわかりませんが、試してみてください。おそらくそれは誰かを助ける。
class
にも同じ問題があります。 composer dump-autoload
とphp artisan config:clear
を試しましたが、問題は解決しませんでした。
その後、問題を見つけるためにコードを読むことにし、問題を見つけました。私の場合の問題は、クラスにコンマがないことです。私のモデルコードを参照してください:
{
protected
$fillable = ['agente_id', 'matter_id', 'amendment_id', 'tipo_id'];
public
$rules = [
'agente_id' => 'required', // <= See the comma
'tipo_id' => 'required'
];
public
$niceNames = [
'agente_id' => 'Membro', // <= This comma is missing on my code
'tipo_id' => 'Membro'
];
}
composer dump-autoload
php artisan config:clear
php artisan cache:clear
これは確実に機能します。そうでない場合は、行う必要があります
composer update
次に、前述のコマンド。
この質問に対する答えとして書いているのではありません。しかし、同じバグに直面したが、ここで述べた答えがうまくいかない場合は、他の人を助けたいです。また、ここで説明したすべてのソリューションを試しました。しかし、私の問題はnamespaceでした。パスが間違っていました。
私が使用した名前空間は次のとおりです。
namespace App\Http\Controllers;
しかし実際には、コントローラーは「FrontEnd」という名前のフォルダー内にあります
そのため、ソリューションはnamespaceを次のように変更します:
namespace App\Http\Controllers\Frontend;
次のコマンドを使用してみてください
php artisan db:seed --class=DatabaseSeeder
それを見つけるために名前空間に割り当てる必要があります。
namespace App\Http\Controllers;
大文字を確認してください!
ホストシステム(WindowsまたはMac)はデフォルトで大文字と小文字を区別せず、Homesteadはこの動作を継承します。一方、運用サーバーでは大文字と小文字が区別されます。
ClassNotFound例外が発生するたびに、次を確認してください。
クラスを再作成しましたが、うまくいきました。すべてのファイルコンテンツをコピーし、ファイルを削除して、php artisan make:seeder ModelTableSeeder
を実行します。 composer dump-autoload
がうまくいかなかったからです。
composer update
上記のコマンドは私のために働いた。
La-ravelで新しい移行を行うたびに、composer.json
ファイルのclassmap
を更新する必要があります。
シーダークラスファイルを探しているときは、composer dump-autoloadを実行できます。再度実行してモデルを探しているときは、シーダーファイル自体で参照できます。そのようです、
use App\{Model};
composer dump-autoload
これはそれを修正します
質問と厳密には関係ありませんが、エラーReflectionException: Class config does not exist
を受け取りました
スペースを含む新しい.env
変数を追加しました。 php artisan config:clear
を実行すると、スペースを含む.env
変数を"
sで囲む必要があることがわかりました。
これで、私のアプリケーションは再び動作するようになりました。Laravel Homestead(5.4)でまだ開発中のように設定をクリアする必要はありません。
通常、接続を閉じるのを忘れると、エラーメッセージReflectionException: Class app does not exist
が幼虫テストに表示されます。
テストでsetUpまたはtearDown関数を使用している場合は、parent::setUp
およびparent::tearDown
を呼び出して接続を閉じることを忘れないでください
public function setUp()
{
parent::setUp();
}
public function tearDown()
{
parent::tearDown();
}
app
をuse
大文字にすると、App
と書き込めます。私のために働いた。
psr-を使用する場合、クラス名にアンダースコアが含まれていないことを確認してください。