Laravel DB::transaction() return value

laravel, php

Solution

By giving a look at `function transaction` it does its process inside a try/catch block

public function transaction(Closure $callback)
{
    $this->beginTransaction();

    // We'll simply execute the given callback within a try / catch block
    // and if we catch any exception we can rollback the transaction
    // so that none of the changes are persisted to the database.
    try
    {
        $result = $callback($this);

        $this->commit();
    }

    // If we catch an exception, we will roll back so nothing gets messed
    // up in the database. Then we'll re-throw the exception so it can
    // be handled how the developer sees fit for their applications.
    catch (\Exception $e)
    {
        $this->rollBack();

        throw $e;
    }

So throws an Exception (after the rollback) if fails or returns `$result`, which is the result of your callback

Problem

It's my first time to use `DB::transaction()` but how exactly does it work if a transaction fails or is successful? In the example below, do I have to manually assign a value to return `true`, or if it fails will the method either return `false` or totally exit the transaction (therefore skipping the rest of the code)? The docs aren't so helpful on this. ``` use Exception; use DB; try { $success = DB::transaction(function() { // Run some queries }); print_r($success); } catch(Exception $e) { echo 'Uh oh.'; } ```

Original source