2017 © Pedro Peláez
 

library laracsv

A Laravel package to easily generate CSV files from Eloquent model.

image

nickschot/laracsv

A Laravel package to easily generate CSV files from Eloquent model.

  • Thursday, July 5, 2018
  • by nickschot
  • Repository
  • 1 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 43 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

LaraCSV

A Laravel package to easily generate CSV files from Eloquent model., (*1)

Build Status, (*2)

Basic usage

$users = User::get(); // All users
$csvExporter = new \Laracsv\Export();
$csvExporter->build($users, ['email', 'name'])->download();

And a proper CSV file will be downloaded with email and name fields., (*3)

Installation

Just run this on your terminal:, (*4)

composer require "usmanhalalit/laracsv:1.*@dev"

and you should be good to go., (*5)

Full Documentation

Build CSV

$exporter->build($modelCollection, $fields) takes two parameters. First one is the model (collection of models), and seconds one takes the field names you want to export., (*6)

$csvExporter->build(User::get(), ['email', 'name', 'created_at']);

Output Options

Download

To get file downloaded to the browser:, (*7)

$csvExporter->download();

You can provide a filename if you wish:, (*8)

$csvExporter->download('active_users.csv');

You can also suppress the first line(heading):, (*9)

$csvExporter->build(User::get(), ['email', 'name', 'created_at'], false);

If no filename is given a filename with date-time will be generated., (*10)

Advanced Outputs

LaraCSV uses League CSV. You can do what League CSV is able to do. You can get the underlying League CSV instance by calling:, (*11)

$csv = $csvExporter->getCsv();

And then you can do several things like:, (*12)

$csv->toHTML(); // To output the CSV as an HTML table 
$csv->jsonSerialize()(); // To turn the CSV in to an array 
$csv = (string) $csv; // To get the CSV as string
echo $csv; // To print the CSV

For more information please check League CSV documentation., (*13)

Custom Headers

Above code example will generate a CSV with headers email, name, created_at and corresponding rows after., (*14)

If you want to change the header with a custom label just pass it as array value:, (*15)

$csvExporter->build(User::get(), ['email', 'name' => 'Full Name', 'created_at' => 'Joined']);

Now name column will show the header Full Name but it will still take values from name field of the model., (*16)

Modify or Add Values

There is a hook which is triggered before processing a database row. For example, if you want to change the date format you can do so., (*17)

$csvExporter = new \Laracsv\Export();
$users = User::get();

// Register the hook before building
$csvExporter->beforeEach(function ($user) {
    $user->created_at = date('f', strtotime($user->created_at)); 
});

$csvExporter->build($users, ['email', 'name' => 'Full Name', 'created_at' => 'Joined']);

Note: If a beforeEach callback returns false then the entire row will be excluded from the CSV. It can come handy to filter some rows., (*18)

Add fields and values

You may also add fields that don't exists in a database table add values on the fly:, (*19)

// The notes field doesn't exist so values for this field will be blank by default 
$csvExporter->beforeEach(function ($user) {
    // Now notes field will have this value
    $user->notes = 'Add your notes'; 
});

$csvExporter->build($users, ['email', 'notes']);

Model Relationships

You can also add fields in the CSV from related database tables, given the model has relationships defined., (*20)

This will get the product title and the related category's title (one to one):, (*21)

$csvExporter->build($products, ['title', 'category.title']);

You may also tinker relation things as you wish with hooks:, (*22)

$products = Product::with('categories')->where('order_count', '>', 10)->orderBy('order_count', 'desc')->get();
$fields = ['id', 'title','original_price' => 'Market Price', 'category_ids',];
$csvExporter = new \Laracsv\Export();
$csvExporter->beforeEach(function ($product) {
    $product->category_ids = implode(', ', $product->categories->pluck('id')->toArray());
});

Road Map

  • Import CSV

The Versions

05/07 2018

dev-master

9999999-dev https://github.com/usmanhalalit/laracsv

A Laravel package to easily generate CSV files from Eloquent model.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Muhammad Usman

laravel csv eloquent export

05/07 2018

1.0.0

1.0.0.0 https://github.com/usmanhalalit/laracsv

A Laravel package to easily generate CSV files from Eloquent model.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Muhammad Usman

laravel csv eloquent export

17/05 2017

1.x-dev

1.9999999.9999999.9999999-dev https://github.com/usmanhalalit/laracsv

A Laravel package to easily generate CSV files from Eloquent model.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Muhammad Usman

laravel csv eloquent export