Laravel: Doctor hasMany Appointments and appontment hasOne rating, 如何获得医生等级
Laravel: Doctor hasMany Appointments and appontment hasOne rating, How to get Doctor rating
我有医生 table 与约会 table 的关系,医生可以有很多约会。约会table与评级的关系,一个约会(只完成)可以有评级。
我想要所有预约医生的平均评分。例如,一位医生有 10 次预约,其中 5 次已完成并且评分为 3、4、1、3、4
我想显示医生的评级作为示例结果 3 平均率。
我该怎么做?
你可以尝试类似的东西。我不知道您使用的属性的名称,所以我使用了我的。
$sum = 0;
$count = 0;
foreach($doctor->appointments as $appointment){
if($appointment->isComplete){
$count++;
$sum += $appointment->rating->value;
}
}
$avg = $sum / $count;
循环医生预约,对于每个预约,检查它是否完成,获取其评分值。
您可以在 Doctor 模型中创建一个具有此逻辑的名为 rating 的函数。
或
您可以使用 hasManyThrough
关系。
hasManyThrough - Laravel
我不确定它是否适用于模型与中间体 table 或不具有一对多关系时..但你可以试一试。
我有医生 table 与约会 table 的关系,医生可以有很多约会。约会table与评级的关系,一个约会(只完成)可以有评级。 我想要所有预约医生的平均评分。例如,一位医生有 10 次预约,其中 5 次已完成并且评分为 3、4、1、3、4 我想显示医生的评级作为示例结果 3 平均率。
我该怎么做?
你可以尝试类似的东西。我不知道您使用的属性的名称,所以我使用了我的。
$sum = 0;
$count = 0;
foreach($doctor->appointments as $appointment){
if($appointment->isComplete){
$count++;
$sum += $appointment->rating->value;
}
}
$avg = $sum / $count;
循环医生预约,对于每个预约,检查它是否完成,获取其评分值。
您可以在 Doctor 模型中创建一个具有此逻辑的名为 rating 的函数。
或
您可以使用 hasManyThrough
关系。
hasManyThrough - Laravel
我不确定它是否适用于模型与中间体 table 或不具有一对多关系时..但你可以试一试。