Laravel集合查询:只获取具有特定属性的模型的计数



我有一个显示项目列表的页面,其中包括一个关系(rmgs)的计数。这是查询:

Project::select('id', 'number', 'name', 'status')
->withCount(['rmgs as project_rmg_submitted' => static function ($query): void {
$query->where('submitted', true);
}])
->withCount(['rmgs as project_rmg_unsubmitted' => static function ($query): void {
$query->where('submitted', false);
}])
->get()

但我只需要状态='已批准'的项目的计数。

我刚找到方法,但此检查为外部标志。我需要检查一下模型的状况。

Project::select('id', 'number', 'name', 'status')
--- this should be conditional for project.status='Approved' ----
->withCount(['rmgs as project_rmg_submitted' => static function ($query): void {
$query->where('submitted', true);
}])
->withCount(['rmgs as project_rmg_unsubmitted' => static function ($query): void {
$query->where('submitted', false);
}])
----------------------------------------------------------
->get()

你试过了吗?

Project::select('id', 'number', 'name', 'status')

->withCount(['rmgs as project_rmg_submitted' => static function ($query): void {
$query->where('submitted', true);
}])
->withCount(['rmgs as project_rmg_unsubmitted' => static function ($query): void {
$query->where('submitted', false);
}])
->where('status','=','Approved')

->get();

最新更新