Я використовую 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 вручну через ремісник, як це було зроблено з php artisan db:seed --class="UsersTableSeeder"
командою, ви обійдете цей клас DatabaseSeeder.
У цьому класі DatabaseSeeder команда Eloquent::unguard();
дозволяє тимчасове присвоєння маси по всіх таблицях, що саме те, що вам потрібно при засіванні бази даних. Цей захисний метод виконується лише під час запуску php aristan db:seed
команди, отже, він є тимчасовим, на відміну від того, щоб зробити поля заповнюваними у вашій моделі (як зазначено у прийнятих та інших відповідях).
Все, що вам потрібно зробити, це додати $this->call('UsersTableSeeder');
метод запуску до класу DatabaseSeeder і запустити php aristan db:seed
у своєму CLI, який за замовчуванням виконає DatabaseSeeder.
Також зауважте, що ви використовуєте множину імені класу Users, тоді як Laraval використовує єдину форму User. Якщо ви вирішили змінити свій клас на звичайну форму однини, ви можете просто відмінити той, //$this->call('UserTableSeeder');
який уже призначений, але прокоментований за замовчуванням у класі DatabaseSeeder.