5.3 - Preparing for Extraction

This commit is contained in:
Adam Wathan
2016-11-17 21:17:48 -05:00
parent e0f49677d8
commit 3c41fcc4f0
4 changed files with 14 additions and 4 deletions

View File

@@ -32,7 +32,7 @@ class Concert extends Model
public function orders()
{
return $this->hasMany(Order::class);
return $this->belongsToMany(Order::class, 'tickets');
}
public function hasOrderFor($customerEmail)
@@ -69,9 +69,9 @@ class Concert extends Model
public function createOrder($email, $tickets)
{
$order = $this->orders()->create([
$order = Order::create([
'email' => $email,
'amount' => $tickets->count() * $this->ticket_price,
'amount' => $tickets->sum('price'),
]);
foreach ($tickets as $ticket) {

View File

@@ -17,4 +17,14 @@ class Ticket extends Model
{
$this->update(['order_id' => null]);
}
public function concert()
{
return $this->belongsTo(Concert::class);
}
public function getPriceAttribute()
{
return $this->concert->ticket_price;
}
}

View File

@@ -15,7 +15,6 @@ class CreateOrdersTable extends Migration
{
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('concert_id');
$table->integer('amount');
$table->string('email');
$table->timestamps();

View File

@@ -32,6 +32,7 @@ class PurchaseTicketsTest extends TestCase
/** @test */
function customer_can_purchase_tickets_to_a_published_concert()
{
$this->disableExceptionHandling();
$concert = factory(Concert::class)->states('published')->create(['ticket_price' => 3250])->addTickets(3);
$this->orderTickets($concert, [