我之前从未使用过Laravel,我正在使用laravels默认用户注册和auth进行3部分注册,用于表单的第1步 . 每一步都有自己的表 . 步骤1s表的id列用于链接所有3个表 .
目前我正在使用 $id = Auth::user()->id
来获取步骤2控制器中的登录用户ID . 相反,如何在创建用户之后将id路由/传递给步骤2控制器存储方法并将视图重定向到步骤2?
在authcontroller中
protected function create(array $data)
{
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'firstName' => $data['firstName'],
'middleName' => $data['middleName'],
'lastName' => $data['lastName'],
]);
}
在Illuminate \ Foundation \ Auth \ RegistersUsers;
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
// pass id to store method in profile and redirect to profileinfo
return view('user/profileinfo');
}
}
4 回答
试试这种方法:
现在在调用
save()
之后,$data->id
应该为您提供最后插入的ID,以便您可以在任何地方使用它 .请记住,如果PK列(具有ID的列)是 not auto-increment ,它将始终返回0 .
您可以将
create()
功能更改为您可以通过以下方式更改AuthController中的create方法:
而不是使用返回
true
或false
的create()
方法,您应该使用返回模型的save()
方法:但是如果你仍然需要简短的语法,你可以使用mass assignment: