Laravel:获取User ::的ID,并使用该ID

时间:2016-05-06 14:36:43

标签: php mysql laravel laravel-5

我在Laravel中有AuthController,我有2个表,一个是Users,一个是Users_Information,我想在注册时插入Users_Information。

所以我想从以下方法中获取id并插入一个新行并将该行的列ID设置为我刚刚创建的用户的ID。

 /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'username' => $data['username'] . ' ' . $data['username2'],
            'mail' => $data['mail'],
            'password' => bcrypt($data['password']),
        ]);
    }

我想使用列id,current_food和current_level插入Users_Information

我有一个名为UserInformation的Users_Information控制器,我只是调用UserInformation :: create但是如何从User :: create获取id?

6 个答案:

答案 0 :(得分:33)

尝试使用返回对象的->id,例如:

$id = $this->create($data)->id;

答案 1 :(得分:15)

create()方法返回模型。

$user = User::create([
    'username' => $data['username'] . ' ' . $data['username2'],
    'mail' => $data['mail'],
    'password' => bcrypt($data['password']),
]);

$userInfo = UserInformation::create([
    'user_id' => $user->id,
    'current_food' => $food,
    'current_level' => $level,
]);

答案 2 :(得分:5)

Eloquent有一种处理saving relationships的好方法,可以在你的情况下使用。它允许您保存相关模型而无需直接访问模型。当然,您必须首先确保您的关系在相应的模型中定义。

下面将创建用户及其信息。我假设您的关系方法被称为information,但您可以根据需要进行调整。

$user = User::create([
    'username' => $data['username'] . ' ' . $data['username2'],
    'mail' => $data['mail'],
    'password' => bcrypt($data['password']),
])->information()->create([
    'current_food' => $current_food,
    'current_level' => $current_level
]);

请注意,我们没有明确设置user_id,因为我们只是通过访问您定义的关系来创建信息; Laravel / Eloquent为您处理!

答案 3 :(得分:2)

此外,如果您不使用Eloquent,则可以使用insertGetId

$id = DB::table('users')->insertGetId(
    [ 'name' => 'John Doe', 'email' => 'john@example.com']
);

答案 4 :(得分:0)

使用insertGetId();它为您提供了插入行的ID。

$userId = User::insertGetId([
    'name' => $request->input('name'),
     'email' => $request->input('email'),
     'password' => bcrypt($request->input('password')),
]);

https://laravel.com/docs/5.7/queries#inserts

答案 5 :(得分:0)

假设我有一个模型名称 Employee ,我想在该模型中插入一些数据,也想获取表ID。因此,我可以通过以下代码轻松实现此目标:

 $employee = new Employee();
 $employee->employeeName = 'Something';
 $employee->save();
 $employee->id;
相关问题