Я использую Laravel 4.2.
ошибка, которую вы видите
[Illuminate\Database\Eloquent\MassAssignmentException]
username
действительно потому, что база данных защищена от массового заполнения, что вы и делаете, когда запускаете сидер. Однако, на мой взгляд, нет необходимости (и может быть небезопасно) объявлять, какие поля должны быть заполнены в вашей модели, если вам нужно только запустить сидер.
В папке для посева у вас есть класс DatabaseSeeder:
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
//$this->call('UserTableSeeder');
}
}
Этот класс действует как фасад, перечисляя все сеялки, которые необходимо выполнить. Если вы вызываете сеялку UsersTableSeeder вручную через artisan, как вы это делали с php artisan db:seed --class="UsersTableSeeder"командой, вы обходите этот класс DatabaseSeeder.
В этом классе DatabaseSeeder команда Eloquent::unguard();позволяет временное массовое назначение для всех таблиц, что именно то, что вам нужно, когда вы заполняете базу данных. Этот незащищенный метод выполняется только при запускеphp aristan db:seed команды, поэтому он является временным, в отличие от заполнения полей в вашей модели (как указано в принятых и других ответах).
Все, что вам нужно сделать, это добавить $this->call('UsersTableSeeder');метод run в класс DatabaseSeeder и запустить его php aristan db:seedв своем интерфейсе командной строки, который по умолчанию будет запускать DatabaseSeeder.
Также обратите внимание, что вы используете имя класса во множественном числе, а Laraval - в единственном числе. Если вы решили изменить свой класс на обычную форму единственного числа, вы можете просто раскомментировать тот, //$this->call('UserTableSeeder');который уже был назначен, но закомментирован по умолчанию в классе DatabaseSeeder.