我是一名 Laravel 新手。我想为我的数据库播种。当我运行 seed 命令时,出现了一个异常
[Illuminate\Database\Eloquent\MassAssignmentException]
username
db:seed [--class[="..."]] [--database[="..."]]
我做错了什么。我使用的命令是
php artisan db:seed --class="UsersTableSeeder"
我的种子类如下:
class UsersTableSeeder extends Seeder {
public function run()
{
User::truncate();
User::create([
'username' => 'PaulSheer',
'email' => '[email protected]',
'password' => '45678'
]);
User::create([
'username' => 'Stevo',
'email' => '[email protected]',
'password' => '45678'
]);
}
}
请阅读 Laravel 文档的这一部分: http://laravel.com/docs/eloquent#mass-assignment
Laravel 默认提供了防止大量分配安全问题的保护。这就是为什么你必须手动定义哪些字段可以被批量分配:
class User extends Model
{
protected $fillable = ['username', 'email', 'password'];
}
警告: 允许批量分配关键字段(如 "密码 "或 "角色")时要小心。这可能会导致安全问题,因为用户可能会在你不希望的情况下更新这些字段值。
当我这样扩展我的模型时,我收到了 MassAssignmentException 异常。
class Upload extends Eloquent {
}
我试图像这样插入数组
Upload::create($array);//$array was data to insert.
**当我创建上传模型为
class Upload extends Eloquent {
protected $guarded = array(); // Important
}
参考 https://github.com/aidkit/aidkit/issues/2#issuecomment-21055670