通过父母的Laravel关系

时间:2016-09-30 18:39:24

标签: php laravel laravel-5

我为包含模块的服务创建了一个模型,每个模块都有价格。多个模块为该服务创造了价格。

- Service #1
-- Module 1 ($20)
-- Module 2 ($40)

使用belongsToMany

class Services extends Model
{
    public function modules()
    {
        return $this->belongsToMany('App\Services\Modules');
        ...

每个模块都链接到一个价格

class Modules extends Model
{
    public function price()
    {
        return $this->hasOne('App\Services\Pricing', 'product')->where('type', 'module');
        ...

和一个将服务链接到模块的service_module表。问题是我应该创建什么样的关系才能为每个服务 ->sum() 模块价格,因为我创建了一个带有循环和刻录的丑陋补丁15每个请求更多查询

$prices = [];
foreach ($services->modules as $modules )
    $prices[] = $modules ->price['month'];
$price = number_format(collect($prices)->sum(), 2, '.', '');

1 个答案:

答案 0 :(得分:1)

您可以使用Eager Loading加载关系以及services查询,将这15个额外查询转换为一个额外查询。

链接文档中的代码示例应足以让您入门。