This package will help you to make your metrics easier, You could get metrics about your Models, Models depending on their relations, or even metrics about your models depending on multiple conditions!!
It would be a very easy to get the number of your stores which has products has a price more than x$ ;)
The first step is using composer to install the package and automatically update your composer.json file, you can do this by running:
composer require syrian-open-source/laravel-relational-metrics
// first you must make a model from facade class
// like post model
$instance = \SOS\RelationalMetrics\Facades\RelationalMetricsFacade::setModel("Post");
// or you can specify thr model name by this way: RelationalMetricsFacade::setModel(Store::class);
The Basic Usage of this package is the same of getting count of some model instances, but with a styled response
$metrics = $instance->getBasicMetrics();
// or you can get the count or the message directly.
$directCount = $instance->getCount();
$directName = $instance->getName();
/*
* Response will be like:
* [
* 'name' => 'Total Stores Number,
* 'count' => 43,
* ];
*
*/
What you can do next, you could get the metrics of a model depending on one of its relations!
Let's assume we want to get the number of stores that has products with price more than 500
$metrics = $instance->getRelationalMetrics($relationName, $relationColumn, $value);
// example: $instance->getRelationalMetrics('products, 'price', 500);
/*
* Response will be like:
* [
* 'name' => 'Total Stores Number,
* 'count' => 12,
* ];
*
*/
At the previous Example the Package will return the number of the stores which has products with price equals to 500
And last but not least, You could get the metrics about a model depending on any number of conditions you want!
// example for the conditions
$conditions = [
['method' => 'where', 'column' => 'address', 'operator' => 'like', 'value' => '%UAE%'],
['method' => 'where', 'column' => 'rate', 'operator' => '>', 'value' => 3],
];
$metrics = $instance->getRelationalMetrics($conditions);
/*
* Response will be like:
* [
* 'name' => 'Total Stores Number,
* 'count' => 2,
* ];
*
*/
At the previous Example the Package will return the number of the stores where their address contains "UAE" and their rate is more than 3
Please see the CHANGELOG for more information about what has changed or updated or added recently.
If you discover any security related issues, please email them first to [email protected], if we do not fix it within a short period of time please open a new issue describing your problem.
The Syrian Open Source platform is the first platform on GitHub dedicated to bringing Syrian developers from different cultures and experiences together, to work on projects in different languages, tasks, and versions, and works to attract Syrian developers to contribute more under one platform to open source software, work on it, and issue it with high quality and advanced engineering features, which It stimulates the dissemination of the open-source concept in the Syrian software community, and also contributes to raising the efficiency of developers by working on distributed systems and teams.