【问题标题】:Laravel: Doctor hasMany Appointments and appontment hasOne rating, How to get Doctor ratingLaravel: Doctor hasMany Appointments and appontment hasOne rating, How to get Doctor rating
【发布时间】:2020-01-30 07:48:42
【问题描述】:

我与约会表有医生表关系,医生可以有很多约会。 Appointments 表与 Ratings 的关系,一个约会(只完成)可以有评分。 我想要所有预约的医生的平均评分。例如,一位医生有 10 次预约,其中 5 次已完成,并且有评分,即 3、4、1、3、4 我想将医生的评分显示为示例结果 3 平均率。

我该怎么做?

【问题讨论】:

  • 你能显示医生、约会和评级表的数据库结构吗?

标签: php laravel relationship


【解决方案1】:

您可以尝试类似的方法。我不知道您正在使用的属性的名称,所以我使用了我的。

$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

我不确定当模型与中间表有一对多关系时它是否适用..但你可以试一试。

【讨论】:

  • 任何其他使用 laravel 关系的解决方案?我已经使用 foreach 完成了,但我想通过使用关系来简化它。有什么想法吗?
猜你喜欢
  • 2021-08-23
  • 2022-12-27
  • 2018-12-06
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多