tim*_*myc 2 php laravel laravel-5
我想知道如何在Laravel中总结多重嵌套关系的属性.我知道,Laravel有一些很酷的功能和如图所示这里,但不知道如何采取更深一层.
我的模型设置如下:
项目有很多任务.
任务有很多日志.
日志具有"持续时间"属性.
我查询了项目,并在html表中迭代项目.我想显示日志持续时间的总和.我想也许我可以这样做:
$project->tasks->logs->sum('duration')
Run Code Online (Sandbox Code Playgroud)
但那不行.这可能与这样一条优雅的线条有关,还是我必须设置一个循环并"手动"求和?
从你的问题我假设你有一系列的hasMany关系,所以没有比这更容易了:
// Project model
public function logs()
{
return $this->hasManyThrough('Log', 'Task');
// defaults to:
// return $this->hasManyThrough('Log', 'Task', 'project_id', 'task_id');
}
// then sum on the query
$project->logs()->sum('duration');
// or on the collection, but don't do it unless you really need that collection
$project->logs->sum('duration');
Run Code Online (Sandbox Code Playgroud)
您可以看到foreign keysEloquent在模型上寻找的默认值,因此如果您不遵守Laravel惯例,请调整它们.