我有这个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();
$this->call('MemberInvitationSeeder');
}
}
我有这个文件MemberInvitationSeeder.php,兄弟姐妹到DatabaseSeeder.php文件
<?php
use Illuminate\Database\Seeder;
use App\MemberInvitation;
class MemberInvitationSeeder extends Seeder {
public function run()
{
MemberInvitation::truncate();
MemberInvitation::create( [
'id' => 'BlahBlah' ,//com_create_guid(),
'partner_id' => 1,
'fisrt_name' => 'Thats',
'last_name' => 'Me',
'email' => 'me@mymail.com',
'mobile_phone' => '444-342-4234',
'created_at' => new DateTime
] );
}
}
现在我打电话给
php artisan db:seed
我得到了:
[ReflectionException]
Class MemberInvitationSeeder does not exist
我尝试了所有我能找到的东西,包括&#34; composer dump-autoload&#34;。无济于事。我做错了什么?
答案 0 :(得分:56)
第一步 - 生成种子:
php artisan make:seed MemberInvitationSeeder
第二步 - 在DatabaseSeeder.php中添加行:
$this->call(MemberInvitationSeeder::class);
第三步:
composer dump-autoload
第四步:
php artisan db:seed
这应该有效
如果这不是线索,请检查文件composer.json并确保在“autoload”部分中包含此代码:
"classmap": [
"database"
],
答案 1 :(得分:6)
我通过使用指令use
:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\YourClassName;
答案 2 :(得分:1)
这对我有用
composer dump-autoload
php artisan db:seed
答案 3 :(得分:1)
我遇到了类似的错误,但是我使用的是DB Facade DB::table
,而不是模型。如果有人遇到类似问题,我会发布答案。
种子文件的命名空间为namespace Database\Seeders;
,而laravel试图在命名空间中查找DB类,因此出现了错误。
Class 'Database\Seeders\DB' not found
。
解决方案:
composer dump-autoload
\DB::table('stock_categories')->([ ... ]);
添加反斜杠,以便Laravel从根(不是从指定的命名空间)开始查找 DB外观 例如,
\DB::table('MemberInvitation')->insert( [
'id' => 'BlahBlah' ,//com_create_guid(),
'partner_id' => 1,
'fisrt_name' => 'Thats',
'last_name' => 'Me',
'email' => 'me@mymail.com',
'mobile_phone' => '444-342-4234',
'created_at' => new DateTime
] );
答案 4 :(得分:0)
我相信我现在知道原因了。
新类MemberInvitationSeeder不在composer.json文件的自动加载类中。
它不存在,因为我手动添加了这个类。
现在,继续,如果我再次添加这些类,我应该使用什么来让我的类自动进入自动加载器?
答案 5 :(得分:0)
如果上述解决方案不起作用,请尝试此解决方案。
您可能已经更改了名称空间(默认情况下为“ App”)。
您需要做的是转到composer.json
文件并检查以下内容:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
如果像本例一样,名称空间是App,则此解决方案不适合您。
否则,请使用找到的名称空间并将该行插入您的seeder类:
use NameSpaceFound\User;
答案 6 :(得分:0)
如果要使用字符串作为参数,则应包括名称空间
$this->call('Database\Seeders\MemberInvitationSeeder');