Laravel 4.2 kullanıyorum.
gördüğün hata
[Illuminate\Database\Eloquent\MassAssignmentException]
username
gerçekten de veritabanı toplu olarak doldurulmaktan korunmaktadır, bu da bir tohumlayıcıyı çalıştırırken yaptığınız şeydir. Ancak, bence, yalnızca bir tohumlayıcı çalıştırmanız gerekiyorsa, modelinizde hangi alanların doldurulabileceğini belirtmek gerekli değildir (ve güvensiz olabilir).
Tohumlama klasörünüzde DatabaseSeeder sınıfınız var:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Bu sınıf, uygulanması gereken tüm ekme makinelerini listeleyen bir cephe görevi görür. UsersTableSeeder tohumlayıcıyı, php artisan db:seed --class="UsersTableSeeder"komutta yaptığınız gibi, artisan aracılığıyla manuel olarak çağırırsanız, bu DatabaseSeeder sınıfını atlarsınız .
Bu DatabaseSeeder sınıfında komut Eloquent::unguard();, tüm tablolarda geçici toplu atamaya izin verir; bu, bir veritabanını tohumlarken tam olarak ihtiyacınız olan şeydir. Bu korumasız yöntem, yalnızcaphp aristan db:seed komutu , bu nedenle modelinizdeki alanları doldurulabilir hale getirmenin aksine geçicidir (kabul edilen ve diğer yanıtlarda belirtildiği gibi).
Tüm yapmanız gereken $this->call('UsersTableSeeder');, DatabaseSeeder sınıfındaki run yöntemini eklemek ve php aristan db:seedvarsayılan olarak DatabaseSeeder'ı çalıştıracak olan CLI'nizde çalıştırmaktır.
Ayrıca , Laraval tekil form User'ı kullanırken, Users sınıfının çoğul bir adını kullandığınızı unutmayın. Sınıfınızı geleneksel tekil biçime değiştirmeye karar verirseniz //$this->call('UserTableSeeder');, DatabaseSeeder sınıfında önceden atanmış ancak varsayılan olarak yorumlanmış olanın açıklamasını kaldırabilirsiniz .