source

라라벨:User::의 ID를 가져옵니다. 이 ID를 사용하여 새 행을 만들고 삽입합니다.

lovecheck 2023. 10. 4. 22:01
반응형

라라벨:User::의 ID를 가져옵니다. 이 ID를 사용하여 새 행을 만들고 삽입합니다.

있습니다AuthController라라벨에서 나는 두개의 테이블을 가지고 있는데 하나는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']),
        ]);
    }

삽입하고 싶습니다.Users_Information기둥을 세워서id,current_food그리고.current_level

제가 조종기를 가지고 있습니다.Users_Information불렀다UserInformation, 그냥 전화할까요?UserInformation::create하지만 내가 어떻게 그 아이드를 얻을 수 있을까요?User::create?

사용해 봅니다.->id반환된 개체의 경우 다음과 같습니다.

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

create()method가 모델을 반환합니다.

$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,
]);

예를 들어, 제가 Employee라는 모델명을 가지고 있는데, 이 모델에 데이터를 삽입하고 싶고 테이블 ID도 받고 싶습니다.그래서 아래의 코드를 통해 이를 쉽게 달성할 수 있습니다.

 $employee = new Employee();
 $employee->employeeName = 'Something';
 $employee->save();
 $employee->id;

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

웅변가는 저축 관계를 다루는 좋은 방법을 가지고 있고, 이는 당신의 경우에 사용될 수 있습니다.모델에 직접 접근하지 않고도 관련 모델을 저장할 수 있습니다.물론 먼저 적절한 모형에 관계가 정의되어 있는지 확인해야 합니다.

아래에서 사용자와 사용자의 정보를 생성합니다.나는 당신의 관계의 방법이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/Elquent가 당신을 위해!

또한, Excellent를 사용하지 않는 경우에는 다음을 사용할 수 있습니다.insertGetId:

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

사용자 정의 ID로 테이블을 설정할 경우 코드에 이를 표시해야 합니다.제 경우, 제 테이블 "Antecedentes"는 사용자 정의 ID "ant_id"를 가지고 있어서 "id"가 작동하지 않고 다음과 같이 "ant_id"를 넣어야 했습니다.

$success = Antecedentes::create($data)->ant_id;

그리고 계속 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/37075148/laravel-get-the-id-of-usercreate-and-insert-new-row-using-that-id

반응형