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

时间:2016-05-12 03:18:14

标签: laravel

我之前从未使用过Laravel,而且我正在使用laravels默认用户注册&amp ;;进行3部分注册。 auth表单的第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 个答案:

答案 0 :(得分:6)

您可以通过以下方式更改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;
}

答案 1 :(得分:3)

尝试这种方法:

$data = new FooModel(); // or in your case User();
$data->column_1 = 'value_1';
$data->column_2 = 'value_2';
$data->save();

现在在致电save()后,$data->id应该为您提供最后插入的ID,以便您可以随时随地使用它。

请记住,如果PK列(带有ID的列)不是自动递增,它将始终返回0.

答案 2 :(得分:2)

您应该使用返回模型的create()方法,而不是使用返回truefalse的{​​{1}}方法:

save()

但如果您仍需要短语法,则可以使用mass assignment

$id = $data->save()->id;

答案 3 :(得分:0)

您可以将var fields = ["field1", "field2", "field3", "field4", "field5"]; var tsv = fields.join("\t"); window.location.href = "data:text/tab-separated-values," + encodeURIComponent(tsv);功能更改为

create()