LARAVEL

CSV faylını Laravel-də necə ixrac etmək olar

15.04.2021 2 dəq oxuma Yeniləndi: 15.04.2021

Laravel layihələrində verilənlər bazasından verilənləri csv və excel faylları kimi ixrac etmək daha çox tələb olunur.Ancaq google-da kitabxanadan istifadə edən saytlara daha çox rast gəldim, lakin php funksiyasından istifadə edərək verilənləri CSV faylı kimi ixrac etsək, niyə hər hansı bir paketdən istifadə edirik. Beləliklə, uşaqlar verilənləri CSV faylı kimi necə ixrac etmək lazım olduğunu aşağıdakı laravel nümunəsində birlikdə baxaq.

İlk addımda bir route -u web.php faylınıza inteqrasiya etməlisiniz.

Addım 1: Route əlavə edin

// Subscribe export to csv
    Route::get('subscribe-export-csv',[subscribeController::class,'subscriberExportCsv'])
        ->name('admin.subscribe.export.csv');

Addım 2: Blade Faylında
Abunəçiləri ixrac etmək istədiyiniz yerdə blade faylınıza ixrac düyməsinə əlavə edin.

<span data-href="{{ route('admin.subscribe.export.csv') }}" id="export" class="btn btn-success w-5 mb-1" onclick="exportSubscribers(event.target);">CSV</span>

Adım 3: Js faylında
Bu addımda, js faylında ixrac üçün bir yönləndirmə edin.

<script>
    function exportSubscribers(_this) {
       let _url = $(_this).data('href');
       window.location.href = _url;
    }
</script>

Addım 4: Kontrollerinizdə
Son addımda laravel tətbiqində CSV-də verilənləri ixrac etmək üçün bir funksiya əlavə etməlisiniz. Burada bütün abunəçiləri əldə edirik, ancaq ixrac etmək istədiyiniz cədvəli dəyişə bilərsiniz.

public function subscriberExportCsv(Request $request)
{
    $fileName = 'subscribers'.date('-Y-m-d-h-i-s').'.csv';
    $subscribers = Subscribers::all();

    $headers = array(
        "Content-type"        => "text/csv",
        "Content-Disposition" => "attachment; filename=$fileName",
        "Pragma"              => "no-cache",
        "Cache-Control"       => "must-revalidate, post-check=0, pre-check=0",
        "Expires"             => "0"
    );

    $columns = array('Email', 'Verify', 'Date');

    $callback = function() use($subscribers, $columns) {
        $file = fopen('php://output', 'w');
        fputcsv($file, $columns);

        foreach ($subscribers as $subscriber) {
            $row['email']  = $subscriber->email;
            $row['verify']  = $subscriber->verify === 1 ? 'verified' : 'not verified';
            $row['updated_at']    = $subscriber->updated_at;

            fputcsv($file, array($row['email'], $row['verify'], $row['updated_at']));
        }

        fclose($file);
    };

    return response()->stream($callback, 200, $headers);
}

 

Digər dildə: EN