5.4 - Extracting a Named Constructor

This commit is contained in:
Adam Wathan
2016-11-18 09:04:24 -05:00
parent 3c41fcc4f0
commit 45104cd59b
4 changed files with 31 additions and 11 deletions

View File

@@ -69,16 +69,7 @@ class Concert extends Model
public function createOrder($email, $tickets)
{
$order = Order::create([
'email' => $email,
'amount' => $tickets->sum('price'),
]);
foreach ($tickets as $ticket) {
$order->tickets()->save($ticket);
}
return $order;
return Order::forTickets($tickets, $email);
}
public function addTickets($quantity)

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Order;
use App\Concert;
use Illuminate\Http\Request;
use App\Billing\PaymentGateway;
@@ -36,7 +37,7 @@ class ConcertOrdersController extends Controller
$this->paymentGateway->charge(request('ticket_quantity') * $concert->ticket_price, request('payment_token'));
// Create an order for those tickets
$order = $concert->createOrder(request('email'), $tickets);
$order = Order::forTickets($tickets, request('email'));
return response()->json($order, 201);

View File

@@ -8,6 +8,20 @@ class Order extends Model
{
protected $guarded = [];
public static function forTickets($tickets, $email)
{
$order = self::create([
'email' => $email,
'amount' => $tickets->sum('price'),
]);
foreach ($tickets as $ticket) {
$order->tickets()->save($ticket);
}
return $order;
}
public function concert()
{
return $this->belongsTo(Concert::class);