سلام دوستان. در حال کار بر روی یک سیستم فروشگاهی هستم. میخوام که 4 نوع گزارش گیری داشته باشم.
1 - گزارش امروز
2 - گزارش هفته
3 - گزارش ماه
4 - گزارش سال
که قراره که تعداد سفارشات ، مقدار ( پول ) فروش ، تاریخ ( برای نمودار chart.js )گزارش گرفته شه.
لطفا اگر امکان پذیره راهنمایی کنید که چطوری باید از چنین چیزی گزارش گرفت. جدول هم به صورت زیر هستش.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateOrdersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('order_number');
$table->unsignedInteger('user_id');
$table->unsignedInteger('product_id');
$table->unsignedInteger('address_id');
$table->string('payment_method');
$table->boolean('payment_status')->default(0);
$table->string('refID');
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('product_id')->references('id')->on('products');
$table->foreign('address_id')->references('id')->on('addresses');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('orders');
}
}
بهتره از laravel schedule استفاده کنین اینم لینکش
https://laravel.com/docs/5.8/scheduling#defining-schedules
یعنی هر روز یک کدی رو اجرا میکنین که میشه گذارش روزانه البته باید خودتون اونارو بنویسین
و الی...
میتونید به جدولتون یه فیلد دیگه مثل sold_at یا ordered_at اضافه کنید و یا از همون timestamp و created_at استفاده کنید..
کوئری میزنید که order های این تاریخ رو میخواهید و نتایج رو در chartjs نشون میدید
ماهیانه
return Post::all()->groupBy(function($post) {
$post->created_at->format('F');
});
همچنین از کربن هم میشه استفاده کرد:
Order::where('created_at', '>=', Carbon::now()->subMonth())->get();
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟