Ketika saya menjalankan php artisan db: seed saya mendapatkan kesalahan berikut:
[ReflectionException] Class SongsTableSeeder does not exist
Apa yang sedang terjadi?
Kelas DatabaseSeeder saya :
<?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('SongsTableSeeder');
}
}
Kelas SongsTableSeeder Saya :
<?php
// Composer: "fzaninotto/faker": "v1.4.0"
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use DB;
class SongsTableSeeder extends Seeder {
public function run()
{
$faker = Faker::create();
$songs = [];
foreach(range(1, 10) as $index)
{
$songs[] = ['title' => $faker->words(rand(1,4))];
}
DB::table('songs')->insert($songs);
}
}
composer dump-autoload
?SongsTableSeeder
definisi kelas?Jawaban:
Anda perlu memasukkan
SongsTableSeeder
file keSongsTableSeeder.php
direktori yang sama denganDatabaseSeeder.php
file Anda .Dan Anda perlu menjalankan di konsol Anda:
untuk menghasilkan peta kelas baru dan kemudian jalankan:
Saya baru saja mengujinya. Ini berfungsi tanpa masalah di Laravel 5
sumber
composer dumpautoload
juga terbangdump-autoload
meregenerasi daftar semua kelas yang perlu dimasukkan dalam proyek, ini digunakan ketika Anda memiliki kelas baru di dalam proyek Anda. Menjalankan normalmake:*
akan menambahkan kelas yang baru dibuat, tetapi ini tidak akan terjadi jika Anda secara manual membuat seeder. Setidaknya begitulah cara saya memahaminya bekerja dari 5 menit pencarian. Saya bukan ahli.composer dump-autoload
bekerja untuk saya.Saya menyelesaikannya dengan melakukan ini:
Ini terjadi karena saya membuat perubahan pada nama file. Saya tidak tahu mengapa itu tidak berhasil setelah perubahan.
sumber
composer dump-autoload
tidak bekerja untuk saya. Saya harus membuat ulang kelas seeder agar berfungsi.File SongsTableSeeder.php harus dalam direktori database / seed atau dalam subdirektori.
Anda perlu menjalankan:
lalu:
atau:
sumber
SongsTableSeeder.php harus dalam direktori database / seed
Langkah-langkah perintah konsol:
lalu:
lalu:
lalu:
atau:
sumber
php artisan optimize
bagianSaya sedang menjalankan rilis dev Laravel 5 terbaru, dan jika Anda telah mengubah namespace Anda harus memanggil kelas seed Anda seperti ini:
Tentunya Anda harus mengganti
todoparrot
dengan namespace yang ditunjuk. Kalau tidak, saya menerima kesalahan yang sama ditunjukkan dalam pertanyaan asli.sumber
Jangan lupa bahwa
composer dump-autoload
kerjanya terkait dengan bagian autoload / classmapcomposer.json
. Berhati-hatilah jika Anda perlu mengubah direktori seeder atau menggunakan beberapa direktori untuk menyimpan seeder.sumber
Jika CustomTableSeeder kami berada di direktori yang sama dengan DatabaseSeeder, kita harus menggunakan seperti di bawah ini:
dalam File DatabaseSeeder kami; kemudian kesalahan lain akan muncul yang mengatakan: 'Kelas DB tidak ditemukan' maka kita harus menambahkan fasad DB kami ke File CustomTableSeeder kami seperti di bawah ini:
itu berhasil untuk saya!
sumber
Saya hanya menggunakan FILE TUNGGAL dengan DUA kelas di dalamnya sebagai berikut:
sumber
Jika Anda telah menyalin file seeder dari proyek lain, maka Anda perlu menjalankan perintah artisan
php artisan db:seed
jika tidak, tidak masalah.sumber
saya mendapat
[ReflectionException] Class Seeder does not exist
terlalu dan ketika saya menggunakancomposer dump-autoload
, saya mendapat kesalahanpreg_match(): JIT compilation failed: no more memory
ketika saya menjalankannya.Apa yang saya lakukan adalah saya mengganti
;pcre.jit=1
kepcre.jit=Off
dalam php.ini ! Anda dapat menemukan jalur dengan menggunakanphp --ini
di terminal Anda!Saya menggunakan mac dengan php 7.3! Semoga itu bisa membantu kalian semua di luar sana!
sumber
Anda mungkin menentukan
.php
ekstensi dan itu tidak menemukan kelas Anda.Apa yang saya lakukan:
Apa yang memecahkan masalah saya: Apa yang saya lakukan:
sumber
Saya memiliki kesalahan "pengecualian refleksi" yang sama. Solusinya adalah menyalin file kelas ke server, dari dev, untuk saya. kesalahan bodoh, tetapi mengingat berapa banyak file yang kita berurusan dengan mudah lupa untuk menyalinnya ke server setiap waktu.
sumber