Joh*_*pit 3 php laravel eloquent laravel-5
我正在尝试users在Laravel 5创建的表中添加一个字段.我已经修改了迁移以添加该字段:
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->string('my_new_field'); // Added this field
$table->rememberToken();
$table->timestamps();
});
}
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Laravel提供的默认身份验证系统.每当新用户注册时,我都需要my_new_field设置一些值.我是如何(以及在哪里)这样做的?
该AuthController处理的认证过程.它使用trait AuthenticatesAndRegistersUsers在postRegister()函数处理注册请求.但实际插入的值在哪里?
该create()在方法App\Services\Registrar负责创建一个新的User实例.我在这个函数中添加了字段:
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'my_new_field' => 'Init Value'
]);
}
Run Code Online (Sandbox Code Playgroud)
根据文件,
要修改新用户向应用程序注册时所需的表单字段,您可以修改
App\Services\Registrar该类.此类负责验证和创建应用程序的新用户.
validator注册器的方法包含应用程序的新用户的验证规则,而create注册器的方法负责在数据库中创建新的用户记录.您可以根据需要随意修改这些方法.注册器由特征中AuthController包含的方法调用AuthenticatesAndRegistersUsers.
更新2016年2月3日 Laravel 5.2 app/Services/Registrar.php文件中的设置已移至app/Http/Controllers/Auth/AuthController.php
我还必须在User模型中填写此字段:
class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
...
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'email', 'password', 'my_new_field'];
...
}
Run Code Online (Sandbox Code Playgroud)