dev-master
9999999-devTools for extracting statistics from a sql table
WTFPL
The Requires
by Anael Favre
1.0
1.0.0.0Tools for extracting statistics from a sql table
WTFPL
The Requires
by Anael Favre
Tools for extracting statistics from a sql table
Allows you to extract a Illuminate\Support\Collection
of statistics about a set of dated Eloquent
rows., (*1)
Eloquent
Illuminate\Support\Collection
is returned for a simpler statistics handlingInstall it with composer :, (*2)
composer require ifnot/statistics, (*3)
Statistics
object from a eloquent query :use Ifnot\Statistics\Statistics; // Get all validated sales (you can also take all with Sale::query()) $validSales = Sale::whereNotNull('validated_at'); // Put our sales into a Statistics object $statistics = Statistics::of($validSales);
use Ifnot\Statistics\Interval; // If we want to build statistics about validation date of sales (it can be also of the creation date, // in this case we will use the eloquent created_at ...) $statistics->date('validated_at'); // Set the interval, the params : // 1 : the interval, check the constants Interval::$DAILY, Interval::$MONTHLY etc ... or use the string "daily", "monthly" instead // 2 : the start date with carbon // 3 : the end date with carbon $statistics->interval(Interval::$DAILY, Carbon::createFromFormat('Y-m-d', '2016-01-01'), Carbon::now())
// We want to count the sales with shipping and without shipping $statistics->indicator('with_shipping', function($row) { return $row->shipping ? 1 : 0; }); $statistics->indicator('without_shipping', function($row) { return $row->shipping ? 0 : 1; }); // And count the sales with more than 500.00 € amount $statistics->indicator('expensive_bough', function($row) { if($row->amount > 500.00) { return 1; } else { return 0; } });
$collection = $statistics->make(); // Use a foreach if you want to loop on each dates foreach($collection as $date => $values) { echo $date ' : ' . $values->expensive_bough; } // Use Collection methods for statistics $collection->sum('with_shipping'); // Count the shipping $collection->avg('with_shipping'); // Average shpping sales on each days on the interval (if you selected daily) $collection->min('with_shipping'); // Minimum daily shipping on the interval $collection->max('with_shipping'); // etc ...
... Work here, (*4)
Tools for extracting statistics from a sql table
WTFPL
Tools for extracting statistics from a sql table
WTFPL