public function generateCsv() { $companies = $this->db->getAll('SELECT DISTINCT * FROM `companies` '); echo "Получил компании \r\n"; $companyCategories = $this->db->getAll('SELECT c.title, cc.category FROM `companies` c JOIN `company_categories` cc ON (cc.id = c.category_id)'); echo "Получил категории компаний \r\n"; $csvArr = []; $csvArr[] = ['Категория', 'Название компании', 'Ссылка на сайт', 'Основной телефон', 'Телефоны', 'Дополнительные контакты', 'Ссылка на страницу контактов', 'Город', 'Отзывы']; echo "Начало процесса формирования csv \r\n"; foreach ($companies as $company) { echo $company['title'] . " \r\n"; $company = $this->data($company); $categories = []; echo "Поиск категорий компании \r\n"; foreach ($companyCategories as $key => $cc) { if ($company['title'] == html_entity_decode($cc['title'])) { echo $cc['category'] . " \r\n"; $categories[] = $cc['category']; unset($companyCategories[$key]); } } $categories = implode(', ', $categories); $phones = []; if ($company['phones'] && is_array($company['phones'])) { foreach ($company['phones'] as $phone) { $phones[] = $phone['description'] . ' - ' . $phone['number']; } } $phones = implode(', ', $phones); $contacts = []; if ($company['other_contacts'] && is_array($company['other_contacts'])) { foreach ($company['other_contacts'] as $contact) { $contacts[] = $contact['description'] . ' - ' . $contact['data']; } } $contacts = implode(', ', $contacts); $reviews = $company['reviews']['title'] . '; Ссылка на отзывы - ' . $company['reviews']['href']; $csvArr[] = [$categories, $company['title'], $company['site'], $company['main_phone'], $phones, $contacts, $company['contact_page'], $company['city'], $reviews]; } echo "Запись csv файла \r\n"; $file = date('d-m-Y') . '.csv'; $path = CSV . $file; $csv = new CsvWriter($path, $csvArr); $csv->GetCsv(); return $file; }