This Laravel Eloquent extension provides record according to dates using models.
This package provides an event that will generate a unique slug when saving or creating any Eloquent model.
composer require jaktech/anaphora
Consider the following table schema for hierarchical data:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
Use the Reportable
trait in your model to work with reports:
class User extends Model
{
use \Jakteck\Anaphora\Traits\Reportable;
}
The trait provides query scopes to filter data by datetime:
yearlyReport($year = null)
: provide year-wise record. By default it will provide current year record.thisYearReport()
: provide current year record.lastYearReport()
: provide previous year record.monthlyReport($month = null, $year = null)
: provide month-wise record. By default it will provide current month.thisMonthReport()
: provide current month record.lastMonthReport()
: provide last month record.thisWeekReport()
: provide this week record. (mon - sun)lastWeekReport()
: provide last week record. (mon - sun)dailyReport($date = null)
: provide date-wise record. By default it will provide today's record.todayReport()
: provide today record.yesterdayReport()
: provide yesterday record.hourlyReport($from = null, $to = null, $date = null)
: provide hour-wise record. By default it will provide records between last hour to current hour.
/*Only Current Year Users*/
$users = User::yearlyReport()->get();
// or
/*2018 Users*/
$year = 2018; // or Carbon date
$users = User::yearlyReport($year)->get();
/*Only Current Year Users*/
$users = User::thisYearReport()->get();
/*Only Last Year Users*/
$users = User::lastYearReport()->get();
/*Only Current Month Users*/
$users = User::monthlyReport()->get();
// or
/*November Current Year Users*/
$month = 11; // or Carbon date
$users = User::monthlyReport($month)->get();
// or
/*November 2018 Year Users*/
$month = 11; // or Carbon date
$year = 2018; // or Carbon date
$users = User::monthlyReport($month, $year)->get();
/*Only Current Month Users*/
$users = User::thisMonthReport()->get();
/*Only Last Month Users*/
$users = User::thisMonthReport()->get();
/*Only Current Week Users (Mon - Sun)*/
$users = User::thisWeekReport()->get();
/*Only Last Week Users (Mon - Sun)*/
$users = User::lastWeekReport()->get();
/*Only Today's Users*/
$users = User::dailyReport()->get();
// or
/*December 27, 2019 Users*/
$date = '2019-12-27'; // or Carbon date
$users = User::dailyReport($date)->get();
/*Only Today's Users*/
$users = User::todayReport()->get();
/*Only Yesterday's Users*/
$users = User::yesterdayReport()->get();
/*Only Last hour to current hour's Users*/
$users = User::hourlyReport()->get();
// or
/*Only 7 am to 2pm Users*/
$from = '07:00'; // or Carbon time
$to = '14:00'; // or Carbon time
$users = User::hourlyReport($from, $to)->get();
// or
/*Only 7 am to 2pm at December 27, 2019 Users*/
$from = '07:00'; // or Carbon time
$to = '14:00'; // or Carbon time
$date = '2019-12-27'; // or Carbon date
$users = User::hourlyReport($from, $to, $date)->get();
You can implement your own conditions or do whatever you want with query.
$users = User::dailyReport()->where('status', '=', 'inactive')->get();
$data = [];
$date = Carbon::now()->firstOfMonth();
while ($date <= Carbon::now()->endOfMonth()) {
$users = User::dailyReport($date)
->when('condition', function ($query) {
$query->where('column', 'value');
})
->whereNotIn('column', ['value1', 'value2'])
->where('column', 'operator', 'value')
->get();
$data[] = $users;
$date = $date->copy()->addDay();
}
This is open-sourced laravel library licensed under the MIT license.