2016-08-11 2 views
3

그래서 사용자를 생성해야하는 트랜잭션을 실행하고 설정 테이블의 외래 키 user_id가 새로 생성 된 user_id 인 설정 테이블 생성을 포함하여 새로운 사용자 ID로 추가 작업을 수행하는 이벤트를 시작합니다 (제공 트랜잭션은 물론 작동합니다).Laravel 5 - 트랜잭션에 새로 삽입 된 ID 가져 오기?

DB::beginTransaction(); 

try { 
    DB::table('users')->insert([ 
       'email' => $email, 
       'password' => $password 
    ]); 

    event(new UserWasStored($newUserId)); // How do I get the $newUserId? 
} 
catch(\Exception $e) { 
    DB::rollback(); 
} 

DB::commit(); 

이 어떻게 트랜잭션 내에서 이벤트에 전달 된 $newUserId를 얻을 수 있습니다 : 여기

는 지금까지이 무엇인가?

답변

6

documentation에 따르면 당신은 또한 새 사용자를 만들려면 User 모델을 사용할 수있는 insertGetId 방법

$newUserId= DB::table('users')->insertGetId([ 
    'email' => $email, 
    'password' => $password 
]); 
0
$id = DB::table('table')->insert($data)->lastInsertId(); 
+0

헤이 스테판은 한 줄에 코드를 포맷하고 다시는 Laravel 5.5으로' – Wonka

1

를 사용한다. 그 대신에, 그것은 당신에게 작업 할 사용자 객체를 줄 것입니다.

$user = User::create([ 
    'email'  => '[email protected]', 
    'password' => bcrypt('your-password') 
]); 

dd($user->id); 
+0

틱으로 포장이 *하지 않습니다 * 커밋되지 않은 트랜잭션 내에서 작동합니다. id 필드는 항상 'null'입니다. – user1643723

관련 문제