我正在开发一个 Laravel API 项目,我正在尝试构建一个包含四个简单报告的仪表板。这些报告从不同的(已经存在的)模型获取数据。所以我想知道应该在哪里为这些报告创建查询。我是否应该创建一个没有模型的仪表板控制器,因为我没有仪表板的数据库表?请就该特定案例场景的最佳实践向我提供建议。我希望保持代码库干净、可维护和可扩展。
对于仪表板数据,您可能需要关系和其他方式来获取数据。我最常见的做法是制作 HomeController、视图和模型,然后在用户登录时显示默认页面和显示。我不认为没有模型就能让你做得更好。有了模型,至少你可以通过 ->relation 更清楚地阐明数据来自哪里,而不是使用长代码。 不管怎样,这个主题是特定于项目的,所以你需要确定什么最适合你。
更简单的方法是创建一个仪表板控制器并使用 count() 函数,如下所示:
<?php
namespace App\Http\Controllers\Api;
use App\Models\User;
use App\Models\Product;
use App\Models\Order;
use App\Http\Controllers\Controller;
class DashboardController extends Controller
{
public function index()
{
$totalUsers = User::count();
$totalProducts = Product::count();
$totalOrders = Order::count();
return response()->json(['data' => [
'total_users' => $totalUsers,
'total_products' => $totalProducts,
'total_orders' => $totalOrders
]]);
}
}
控制器:
Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard.index');
响应将是:
{
"data": {
"total_users": 21,
"total_products": 100,
"total_orders": 51
}
}
我将使用资源,模型很难处理。这样,您可以更好地控制响应的格式。
制作资源:
php artisan make:resource NameResource