Saya menggunakan Laravel 4.2.
kesalahan yang Anda lihat
[Illuminate\Database\Eloquent\MassAssignmentException]
username
memang karena database dilindungi dari pengisian secara massal, itulah yang Anda lakukan saat menjalankan seeder. Namun, menurut pendapat saya, tidak perlu (dan mungkin tidak aman) untuk mendeklarasikan bidang mana yang harus dapat diisi dalam model Anda jika Anda hanya perlu menjalankan seeder.
Di folder seeding, Anda memiliki kelas DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Kelas ini bertindak sebagai fasad, mendaftar semua seeder yang perlu dieksekusi. Jika Anda memanggil seeder UsersTableSeeder secara manual melalui artisan, seperti yang Anda lakukan dengan php artisan db:seed --class="UsersTableSeeder"
perintah, Anda melewati kelas DatabaseSeeder ini.
Di kelas DatabaseSeeder ini, perintah Eloquent::unguard();
memungkinkan penugasan massal sementara di semua tabel, yang persis seperti yang Anda butuhkan saat melakukan seeding database. Metode lengah ini hanya dijalankan saat Anda menjalankan php aristan db:seed
perintah, oleh karena itu bersifat sementara dibandingkan membuat bidang dapat diisi dalam model Anda (seperti yang dinyatakan dalam jawaban yang diterima dan jawaban lainnya).
Yang perlu Anda lakukan adalah menambahkan metode $this->call('UsersTableSeeder');
ke run di kelas DatabaseSeeder dan menjalankannya php aristan db:seed
di CLI yang secara default akan menjalankan DatabaseSeeder.
Perhatikan juga bahwa Anda menggunakan nama kelas jamak Users, sedangkan Laraval menggunakan bentuk tunggal User. Jika Anda memutuskan untuk mengubah kelas Anda ke bentuk tunggal konvensional, Anda cukup menghapus komentar //$this->call('UserTableSeeder');
yang telah ditetapkan tetapi memberi komentar secara default di kelas DatabaseSeeder.