If you have a DB transaction and want to return its result, there are at least two ways, see the example.
// 1. You can pass the parameter by reference$invoice = NULL;DB::transaction(function () use (&$invoice) { $invoice = Invoice::create(...); $invoice->items()->attach(...);}) // 2. Or shorter: just return trasaction result$invoice = DB::transaction(function () { $invoice = Invoice::create(...); $invoice->items()->attach(...); return $invoice;});