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.