如何在没有按钮提交的情况下创建 laravel 过滤器
How to create laravel filter without button submit
我想在仪表板管理面板中创建一些过滤器,此过滤器使用 select 下拉菜单,带有今天、过去 7 天和过去 30 天的选项,我不会使用按钮提交来获取数据。我用这个条件
if (request()->ajax()) {
if (!empty($request->filter)) {
if ($request->filter == 1) {
$today = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '=', Carbon::now())->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '=', Carbon::now())->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '=', Carbon::now())->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '=', Carbon::now())
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
echo json_encode($today);
} elseif($request->filter == 2){
$a_week = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '>=', Carbon::now()->subDays(7))->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(7))->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(7))->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '>=', Carbon::now()->subDays(7))
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
echo json_encode($a_week);
}
elseif ($request->filter == 3) {
$a_month = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '>=', Carbon::now()->subDays(30))->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(30))->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(30))->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '>=', Carbon::now()->subDays(30))
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
}
}
}
我应该在 laravel blade 中做什么?它将使用 ajax 来获取数据?,或者什么
<select id="mySelect" onchange="filterData()">
<option value="1">Today</option>
<option value="2">Week</option>
<option value="3">Month</option>
</select>
<script>
function filterData() {
let filter = document.getElementById("mySelect").value;
// Here you need to ajax call the method by post request with filter value
}
</script>
我想在仪表板管理面板中创建一些过滤器,此过滤器使用 select 下拉菜单,带有今天、过去 7 天和过去 30 天的选项,我不会使用按钮提交来获取数据。我用这个条件
if (request()->ajax()) {
if (!empty($request->filter)) {
if ($request->filter == 1) {
$today = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '=', Carbon::now())->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '=', Carbon::now())->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '=', Carbon::now())->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '=', Carbon::now())
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
echo json_encode($today);
} elseif($request->filter == 2){
$a_week = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '>=', Carbon::now()->subDays(7))->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(7))->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(7))->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '>=', Carbon::now()->subDays(7))
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
echo json_encode($a_week);
}
elseif ($request->filter == 3) {
$a_month = array(
$purchase_order = PurchaseOrder::whereDate('date_of_purchase', '>=', Carbon::now()->subDays(30))->get()->count(),
$sales_order = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(30))->get()->count(),
$revenue = SalesOrder::whereDate('date_of_sales', '>=', Carbon::now()->subDays(30))->get()->sum('grand_total'),
$product_sales = ProductSalesOrder::leftJoin('product', 'product.product_id', '=', 'product_sales_order.product_id')
->leftJoin('sales_order', 'sales_order.sales_order_id', '=', 'product_sales_order.sales_order_id')
->whereDate('sales_order.date_of_sales', '>=', Carbon::now()->subDays(30))
->selectRaw('harga_beli * qty_order AS total_modal')->get()->sum('total_modal'),
);
}
}
}
我应该在 laravel blade 中做什么?它将使用 ajax 来获取数据?,或者什么
<select id="mySelect" onchange="filterData()">
<option value="1">Today</option>
<option value="2">Week</option>
<option value="3">Month</option>
</select>
<script>
function filterData() {
let filter = document.getElementById("mySelect").value;
// Here you need to ajax call the method by post request with filter value
}
</script>