【发布时间】:2017-07-30 12:18:19
【问题描述】:
我在我的用户表的帐户表上添加了一个带有外键约束的列 account_id。
对于注册过程,我现在希望首先将email 插入到帐户表中。然后我想用account_id 和所有其他注册信息填充用户表。
我的 RegisterController.php 看起来像这样:
<?php
namespace App\Http\Controllers\Auth;
use App\Account;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* 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|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$account = Account::create([
'email' => $data['email'],
]);
return User::create([
// 'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'account_id' => $accounts['id'],
]);
}
}
我的 Account.php 如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Account extends Model
{
public function user()
{
return $this->hasOne('User','account_id');
}
}
而我的 Users.php 看起来像这样:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function account()
{
return $this->belongsTo('Account');
}
}
这似乎不起作用。我是 Laravel 的新手,在这里有点迷路。任何指针都会很棒!
【问题讨论】:
标签: laravel laravel-5 laravel-5.4