public function download() { $contacts = $this->contactStore->where('marketing_optin', 1)->and('is_blocked', 0)->get(); $buffer = fopen('php://temp', 'r+'); fputcsv($buffer, ['ID', 'Email', 'First Name', 'Last Name', 'Phone', 'Mobile', 'Company', 'Postcode', 'Address 1', 'Address 2', 'Town']); foreach ($contacts as $contact) { $thisContact = ['id' => $contact->getId(), 'email' => $contact->getEmail(), 'first_name' => $contact->getFirstName(), 'last_name' => $contact->getLastName(), 'phone' => $contact->getPhone(), 'mobile' => $contact->getMobile(), 'company' => $contact->getCompany(), 'postcode' => $contact->getPostcode()]; $thisContact = array_merge($thisContact, $contact->getAddress()); fputcsv($buffer, $thisContact); } rewind($buffer); $csv = ''; while ($line = fgets($buffer)) { $csv .= $line; } fclose($buffer); return $this->response->download('contacts.csv', $csv); }