Laravel 5.2 - 如何获取新创建的用户的ID并将其传递给控制器

non*_*ame 5 laravel

我之前从未使用过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'],
    ]);
}
Run Code Online (Sandbox Code Playgroud)

在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');
}

}
Run Code Online (Sandbox Code Playgroud)

all*_*ghi 7

您可以通过以下方式更改AuthController中的create方法:

protected function create(array $data)
{
    $user =  User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),

    ]);

    $id= $user->id; // Get current user id

    return $user;
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*nin 3

您应该使用返回模型的create()方法,而不是使用返回trueor 的方法:falsesave()

$id = $data->save()->id;
Run Code Online (Sandbox Code Playgroud)

但如果您仍然需要简短的语法,您可以使用批量赋值

$userModel = new User($data);
$userModel->save();
$id = $userModel->id;
Run Code Online (Sandbox Code Playgroud)