whereNotNull('published_at'); } public function getFormattedDateAttribute() { return $this->date->format('F j, Y'); } public function getFormattedStartTimeAttribute() { return $this->date->format('g:ia'); } public function getTicketPriceInDollarsAttribute() { return number_format($this->ticket_price / 100, 2); } public function orders() { return $this->hasMany(Order::class); } public function tickets() { return $this->hasMany(Ticket::class); } public function orderTickets($email, $ticketQuantity) { $order = $this->orders()->create(['email' => $email]); $tickets = $this->tickets()->take($ticketQuantity)->get(); foreach ($tickets as $ticket) { $order->tickets()->save($ticket); } return $order; } public function addTickets($quantity) { foreach (range(1, $quantity) as $i) { $this->tickets()->create([]); } } public function ticketsRemaining() { return $this->tickets()->whereNull('order_id')->count(); } }