通过父母的Laravel关系

I created a model for services that are packed with modules and each modules has a price. Multiple modules create the price for that service.

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

Using belongsToMany

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

each module links to a price

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

and a service_module table that links services to modules. The problem is what kind of relationship should I create to be able to ->sum() the module prices for each service because I created an ugly patch with loops and burning 15 more queries per request

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

You can use Eager Loading to load your relationships along with the services query to turn those 15 extra queries into one extra query.

Code examples in the linked docs should be enough to get you started.