Laravel 计算关系中男性或女性的数量 table
Laravel count number of Male or Female from a relationship table
我有以下型号:
UserProgram user_id, program_id.
User
Profile, user_id, gender
Program
我的 UserProgram
模型中有一个 function gender
public function gender()
{
$gender = "N/A";
$user = User::find($this->user_id);
if (!empty($user)) {
$profile = Profile::where('user_id',$user->id)->first();
if (!empty($profile)) {
$gender = $profile->gender;
}
}
return $gender;
}
现在我想 运行 一个查询,计算我有多少男性或女性参加一个特定的节目。
我希望能够做这样的事情。
$male_count = UserProgram::with(‘gender)->where([
['program_id',104],[‘gender’,’Male’]
])->count();
如果您在 运行 中的查询更改为
$male_count = UserProgram::withCount('gender')->where([['program_id', 104], ['gender', 'Male']])->get();
以上不会工作,因为 Laravel 将期望 gender()
到 return 一个 Relation
而不是 Model
。
假设您在 UserProgram
模型中有一个 user
关系,并且在您的 user
模型中有一个 profile
关系,您可以使用 whereHas:
$count = UserProgram::where('program_id', 104)
->whereHas('user.profile', function ($query) {
$query->where('gender', 'Male');
})
->count();
我有以下型号:
UserProgram user_id, program_id.
User
Profile, user_id, gender
Program
我的 UserProgram
模型中有一个 function gender
public function gender()
{
$gender = "N/A";
$user = User::find($this->user_id);
if (!empty($user)) {
$profile = Profile::where('user_id',$user->id)->first();
if (!empty($profile)) {
$gender = $profile->gender;
}
}
return $gender;
}
现在我想 运行 一个查询,计算我有多少男性或女性参加一个特定的节目。 我希望能够做这样的事情。
$male_count = UserProgram::with(‘gender)->where([
['program_id',104],[‘gender’,’Male’]
])->count();
如果您在 运行 中的查询更改为
$male_count = UserProgram::withCount('gender')->where([['program_id', 104], ['gender', 'Male']])->get();
以上不会工作,因为 Laravel 将期望 gender()
到 return 一个 Relation
而不是 Model
。
假设您在 UserProgram
模型中有一个 user
关系,并且在您的 user
模型中有一个 profile
关系,您可以使用 whereHas:
$count = UserProgram::where('program_id', 104)
->whereHas('user.profile', function ($query) {
$query->where('gender', 'Male');
})
->count();