我正在输入php artisan db:seed
命令。
我得到错误赞:
[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' => 'chris@scotch.io',
'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();
}
}
我引用此Link设计&amp;开发登录页面。 请帮我解决这个问题。感谢。
答案 0 :(得分:99)
执行composer update
,然后composer dump-autoload
。
如果以上方法无法解决问题,请更改 classmap
文件中的 composer.json
,它包含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
。
答案 1 :(得分:11)
根据我的经验,当您尝试调用的类有一些错误且无法编译时,这将显示在大部分时间。请检查未反映的课程是否可以自行执行。
答案 2 :(得分:9)
composer dump-autoload
应该修复它。
答案 3 :(得分:4)
我遇到了这个问题,我可以通过php artisan config:cache
来解决这个问题。问题是我之前已经运行过该命令,后来又包含了一些新的播种器类。缓存的配置无法识别新类。所以运行该命令再次起作用。
如果您发现自己经常更改以包含新的播种器类,请考虑运行php artisan config:clear
。这样您就可以根据需要进行多次更改,然后在测试后再次运行config:cache
以使事情再次以最佳状态运行。
答案 4 :(得分:3)
我对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'
];
}
答案 5 :(得分:1)
尝试使用以下命令
php artisan db:seed --class=DatabaseSeeder
答案 6 :(得分:1)
您需要将其指定给名称空间才能找到它。
namespace App\Http\Controllers;
答案 7 :(得分:1)
我不是在写这个问题的答案。但是如果他们遇到同样的错误我想帮助别人,但这里提到的答案不起作用。我也试过这里提到的所有解决方案。但我的问题在于我使用的 名称空间 。路径错了。
我使用的命名空间是:
namespace App\Http\Controllers;
但实际上控制器位于名为“ FrontEnd ”
的文件夹中因此解决方案是将名称空间更改为:
namespace App\Http\Controllers\Frontend;
答案 8 :(得分:1)
如果使用 psr-0 ,请检查类名是否不包含下划线。
答案 9 :(得分:0)
检查文件/文件夹权限
我今天一直在为这个错误而苦苦挣扎,并且没有大量的缓存,配置,自动加载清除对您有所帮助。更令人困惑的是,如果是由Web请求启动的,则会引发该错误,但可以通过tinker访问该类。
检查错字,语法错误和不正确的命名空间后,我最终发现这是文件权限问题。包含我的课程的文件夹和文件没有适当的权限,因此引发了此错误。我将权限级别错误设置为771(文件夹)和660(文件),通过将其更改为775和664,我可以使其正常工作。
我对不同行为的理解是,从命令行运行时,它以我的用户身份读取文件(具有所需的所有权限),但是从网络启动时,它使用的是“其他”权限组什么也做不了。
答案 10 :(得分:0)
在尝试到达自定义路由文件中的端点时出现了此错误,该端点的名称空间位于RouteServiceProvider
RouteServiceProvider
的前置名称空间)$router->group(['namespace' ...])
中的默认RouteServiceProvider
为不正确。更新RouteServiceProvider
中的名称空间可以解决此问题,因为路由文件中指定的相对控制器路径现在可以正确解析。
答案 11 :(得分:0)
如果composer dump-autoload
无法解决该问题,或者该问题不是新创建的类。
检查类及其特征中的语法错误。
在我的情况下,一个Trait中存在语法错误,但是实际使用该Trait的Class显示了ReflectionException
。
答案 12 :(得分:0)
检查您的大小写!
默认情况下,您的主机系统(Windows或Mac)不区分大小写,并且Homestead继承了此行为。另一方面,您的生产服务器区分大小写。
每当您收到 ClassNotFound 异常时,请检查以下内容:
答案 13 :(得分:0)
composer dump-autoload
php artisan config:clear
php artisan cache:clear
这肯定会起作用。 如果不是,则需要
composer update
,然后是上述命令。
答案 14 :(得分:0)
当您忘记关闭连接时,幼虫测试中通常会显示错误消息$file = tmpfile();
fwrite($file, 'some initial content');
$path = stream_get_meta_data($file)['uri'];
system("notepad $path");
// process the file afterwards
。
如果您在测试中使用setUp或tearDown函数,请不要忘记通过调用ReflectionException: Class app does not exist
和parent::setUp
来关闭连接
parent::tearDown
答案 15 :(得分:0)
作曲家更新
以上命令为我工作。
每当您在la-ravel中进行新迁移时,都需要刷新composer.json文件中的“ classmap”。
答案 16 :(得分:0)
composer dump-autoload
这将解决它
答案 17 :(得分:0)
我重新创建了课程,但它确实奏效了。复制所有文件内容,删除文件,然后运行php artisan make:seeder ModelTableSeeder
。因为composer dump-autoload
对我不起作用。
答案 18 :(得分:0)
与问题没有严格关联,但收到错误ReflectionException: Class config does not exist
我添加了一个新的.env
变量,其中包含空格。正在运行php artisan config:clear
告诉我,其中包含空格的.env
变量应该被"
包围。
这和我的应用程序是否再次起作用,不需要在Laravel Homestead(5.4)的开发中进行配置清除
答案 19 :(得分:0)
在寻找播种机类文件时,您可以运行 composer dump-autoload 。当你再次运行它并且它正在寻找模型时,你可以在播种机文件本身上引用它。像这样,
use App\{Model};