gpt4 book ai didi

php - Laravel - 急切加载 Eloquent 模型的方法(不是关系)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:46 24 4
gpt4 key购买 nike

就像我们可以预加载一个 Eloquent 模型的关系,有没有办法预加载一个不是 Eloquent 模型关系方法的方法?

例如,我有一个 Eloquent 模型 GradeReport,它有以下方法:

public function totalScore()
{
return $scores = DB::table('grade_report_scores')->where('grade_report_id', $this->id)->sum('score');
}

现在我得到了一组 GradeReport Eloquent 模型。

$gradeReports = GradeReport::where('student_id', $studentId)->get();

如何为集合中的所有 GradeReport Eloquent 模型预加载 totalScore 方法的返回值?

最佳答案

您可以将任意属性添加到您的模型中,方法是将它们添加到 $appends 数组并提供一个 getter。在您的情况下,以下应该可以解决问题:

class GradeReport extends Model {
protected $appends = ['totalScore'];

public function getTotalScoreAttribute() {
return $scores = DB::table('grade_report_scores')->where('grade_report_id', $this->id)->sum('score');
}
}

现在,从您的 Controller 返回的所有 GradeReport 对象都将设置 totalScore 属性。

关于php - Laravel - 急切加载 Eloquent 模型的方法(不是关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com