Deb*_*sad 5 php laravel eloquent laravel-5
就像我们可以急切地加载一个Eloquent模型的关系一样,有没有办法急于加载一个不是Eloquent模型的关系方法的方法?
例如,我有一个Eloquent模型GradeReport,它有以下方法:
public function totalScore()
{
return $scores = DB::table('grade_report_scores')->where('grade_report_id', $this->id)->sum('score');
}
Run Code Online (Sandbox Code Playgroud)
现在我收集了一些GradeReportEloquent模型.
$gradeReports = GradeReport::where('student_id', $studentId)->get();
Run Code Online (Sandbox Code Playgroud)
如何在集合中totalScore为所有GradeReportEloquent模型加载方法的返回值?
您可以通过将任意属性添加到$ 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');
}
}
Run Code Online (Sandbox Code Playgroud)
现在,从控制器返回的所有GradeReport对象都将设置totalScore属性.
| 归档时间: |
|
| 查看次数: |
3269 次 |
| 最近记录: |