如何在用户注册时插入到多个表中,以及如何编辑注册
2022-08-31 01:17:37
注册新用户时,如何在多个表(默认用户表和父表)中插入行?我知道我需要编辑模型,身份验证控制器和视图。
我的用户模型:
namespace Jcfk\Models\User;
class User extends Model implements AuthenticatableContract,
CanResetPasswordContract
{
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'user';
/**
* @var string
*/
protected $primaryKey = 'user_id';
/**
* @var bool
*/
public $timestamps = false;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['email', 'password'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
public function parents() {
return $this->hasOne("app\Models\Parents");
}
/**
* Is the current user an admin
*
* @return bool
*/
public function isAdmin() {
return $this->role_id === Role::ADMIN;
}
public function isParents() {
return $this->role_id === Role::PARENT;
}
}
家长模式:
namespace Jcfk\Models\Parents;
class Parents extends Model
{
protected $table = 'parent';
public $timestamps = false;
public $primaryKey = 'user_id';
protected $fillable = ['name', 'phone', 'address', 'city_id', 'region',
'postalcode'];
public function user() {
return $this->belongsTo("app\User");
}
}
身份验证控制器:
namespace Jcfk\Http\Controllers\Auth;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Routing\Registrar;
use Jcfk\Models\User;
use Jcfk\Models\Parents;
use Validator;
use Jcfk\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers;
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct(Guard $auth, Registrar $registrar) {
$this->auth = $auth;
$this->registrar = $registrar;
$this->middleware('guest', ['except' => 'getLogout']);
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data) {
return Validator::make($data, [
//'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:user',
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data) {
$user = new User($data);
$parents = new Parents($data);
$user->save();
$user->Parents()->save($parents);
}
}
父项的数据库字段为 、 、 、 、 ...
用户的数据库字段为 、 、 、 ...user_id
name
phone
address
user_id
email
password
我也需要帮助处理我的文件register.blade.php
<form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/register') }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label class="col-md-4 control-label">Name</label>
<div class="col-md-6">
<input type="text" class="form-control" name="name" value="{{ old('user_id') }}">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input type="email" class="form-control" name="email" value="{{ old('email') }}">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Confirm Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password_confirmation">
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Register
</button>
</div>
</div>
</form>