데이터베이스 트랜잭션 - Laravel

하나 이상의 테이블에 둘 이상의 데이터를 입력하거나 수정할 때 데이터베이스를 처리할 때 트랜잭션과 그 중요성에 대해 이야기하는 이 멋진 기사https://fideloper.com/laravel-database 트랜잭션을 발견하여 테이블의 모든 값이 입력되었음을 확신할 수 있습니다. 정확하므로 다음 프로젝트에서 유용하게 사용할 수 있기를 바랍니다.
  • 거래 없음

  • // Create Account
    $newAcct = Account::create([
        'accountname' => Input::get('accountname'),
    ]);
    
    // Create User
    $newUser = User::create([
        'username' => Input::get('username'),
        'account_id' => $newAcct->id,
    ]);
    


  • 거래 도구 세트

  • // Start transaction
    beginTransaction();
    
    // Run Queries
    $acct = createAccount();
    $user = createUser();
    
    // If there's an error
    //    or queries don't do their job,
    //    rollback!
    if( !$acct || !$user )
    {
        rollbackTransaction();
    } else {
        // Else commit the queries
        commitTransaction();
    }
    


  • 기본 트랜잭션

  • DB::transaction(function()
    {
        $newAcct = Account::create([
            'accountname' => Input::get('accountname')
        ]);
    
        $newUser = User::create([
            'username' => Input::get('username'),
            'account_id' => $newAcct->id,
        ]);
    
        if( !$newUser )
        {
            throw new \Exception('User not created for account');
        }
    });
    


  • 고급 트랜잭션

  • // Start transaction!
    DB::beginTransaction();
    
    try {
        // Validate, then create if valid
        $newAcct = Account::create( ['accountname' => Input::get('accountname')] );
    } catch(ValidationException $e)
    {
        // Rollback and then redirect
        // back to form with errors
        DB::rollback();
        return Redirect::to('/form')
            ->withErrors( $e->getErrors() )
            ->withInput();
    } catch(\Exception $e)
    {
        DB::rollback();
        throw $e;
    }
    
    try {
        // Validate, then create if valid
        $newUser = User::create([
            'username' => Input::get('username'),
            'account_id' => $newAcct->id
        ]);
    } catch(ValidationException $e)
    {
        // Rollback and then redirect
        // back to form with errors
        DB::rollback();
        return Redirect::to('/form')
            ->withErrors( $e->getErrors() )
            ->withInput();
    } catch(\Exception $e)
    {
        DB::rollback();
        throw $e;
    }
    
    // If we reach here, then
    // data is valid and working.
    // Commit the queries!
    DB::commit();
    




    몇 가지 기본 사항을 제시하려고 했지만 더 깊이 들어가려면 출처를 방문하십시오.
    저와 함께 즐거우셨기를 바라며, 새로운 것을 찾는 여러분을 존경합니다.

    좋은 웹페이지 즐겨찾기