我正在跟随Jeffrey Way在laracasts中使用名为Incremental API的教程.
Laravel 4 faker类播种和laravel 5.4之间有不同的编码.
我仍然遵循教程"Seeders Reloaded"中的相同代码行.现在,我被困在"Class LessonTagTableSeeder不存在"
TagTableSeeder
class TagsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create('App\Tag');
for($i=1; $i <= 10; $i++) {
DB::table('tags')->insert([
'name' => $faker->word,
'created_at' => \Carbon\Carbon::now(),
'updated_at' => \Carbon\Carbon::now(),
]);
}
}
Run Code Online (Sandbox Code Playgroud)
LessonTagTableSeeder
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;
use App\Lesson;
use App\Tag;
class LessonTagTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker::create();
$lessonIds = Lesson::pluck('id')->all();
$tagIds = Tag::pluck('id')->all();
for($i=1; $i <= 30; $i++) {
DB::table('lesson_tag')->insert([
'lesson_id' => $faker->randomElement($lessonIds),
'tag_id' => $faker->randomElement($tagIds)
]);
}
}
Run Code Online (Sandbox Code Playgroud)
DatabaseSeeder
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\Lesson;
use App\Tag;
use DB;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0');
Lesson::truncate();
Tag::truncate();
DB::table('lesson_tag')->truncate();
Model::unguard();
$this->call('LessonsTableSeeder');
$this->call('TagsTableSeeder');
$this->call('LessonTagTableSeeder');
DB::statement('SET FOREIGN_KEY_CHECKS=1');
}
Run Code Online (Sandbox Code Playgroud)
我能够使用php artisan db:seed --class = TagsTableSeeder播种TagsTableSeeder
当我运行"php artisan db:seed --class = LessonTagTableSeeder"时,系统会提示我:
[ReflectionException]类LessonTagTableSeeder不存在
你知道如何编辑上面的代码吗?任何帮助表示赞赏
当您对播种器文件进行更改并且它不反映您的更改时,您需要运行composer dump autoload.
您可以使用以下任一命令
$ composer dump-autoload
$ composer du
$ composer dump
$ composer dump-autoload -o
Run Code Online (Sandbox Code Playgroud)
然后尝试再次运行命令db:seed,它会反映您的更改.
composer dump autoload是做什么的?
composer dump-autoload不会下载任何东西.它只是重新生成需要包含在项目中的所有类的列表(autoload_classmap.php).非常适合在项目中使用新课程.
理想情况下,您可以执行composer dump-autoload -o,以加快网页的加载速度.它不是默认的唯一原因是因为生成需要更长的时间(但只是略微明显)