Dec 30, 2018
0
Level 54
Returning Var From DB Transaction
I'm asking to find out if this is correct way I should be returning the property inside of the DB::transaction closure as well ask if there are any suggestions on how to structure these calls in the controller.
<?php
namespace App\Http\Controllers;
use DB;
use App\Models\Customer;
use App\Models\Property;
use Illuminate\Http\Request;
use App\Jobs\ProcessPropertyMainPhoto;
class PropertiesController extends Controller
{
/**
* Store a newly created property for a business unit..
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(Request $request)
{
$this->authorize('create', Property::class);
$property = DB::transaction(function () use ($request) {
$customer = Customer::create([
'first_name' => $request->customer['first_name'],
'last_name' => $request->customer['last_name'],
'email' => $request->customer['email'],
'home_phone' => $request->customer['home_phone'],
'mobile_phone' => $request->customer['mobile_phone'],
]);
$customer->address()->create([
'address1' => $request->customer['address1'],
'address2' => $request->customer['address2'],
'city' => $request->customer['city'],
'state' => $request->customer['state'],
'zip' => $request->customer['zip'],
]);
$property = auth()->user()->businessUnit->properties()->create([
'appointment_date' => $request->appointment_date,
'notes' => $request->notes,
'office_phone' => $request->office_phone,
'creator_id' => auth()->user()->id,
'customer_id' => $customer->id,
]);
$property->address()->create([
'address1' => $request->address1,
'address2' => $request->address2,
'city' => $request->city,
'state' => $request->state,
'zip' => $request->zip,
]);
ProcessPropertyMainPhoto::dispatch($property);
return $property;
});
return response()->json(['property' => $property, 'status' => 'success'], Response::HTTP_CREATED);
}
}
Please or to participate in this conversation.