减少laravel中的查询

Quick question to which I haven't been able to find a solution for myself, nor by googling it.

On my dashboard view I show my payment plans, simply by doing $plans = Plan::all() and I return that to the view. Nothing fancy there. But, on my actual dashboard view, I want to show the total amount in dollars from the transactions that have been done. So on my view, I do the following (stripped example):

@foreach($plans as $plan)
    {{ $plan->paidAmount() }}
@endforeach

Which is using the following method from my model:

private function paidAmount()
{
    return $this->transactions->sum('amount');
}

Which basically just grabs the total amount of all related transactions to that plan, and displays it on the page. However, this generates a new query for each of my plans. Let's say I have 5 plans, it will generate 5 additional queries for each amount I need to be displayed.

Same goes for the remaining amount that I want to display:

private function paidAmount()
{
    return $this->amount - $this->paidAmount();
}

Which will generate an additional 5 queries. So for a simple table in which I display some information,a whopping 11 queries are being executed.

Is there any way that I can include the paidAmount and remainingAmount in my original query? I know there should be a way, I just haven't been able to find it yet. So just something along the lines of:

$plans = Plan::with('paidAmount')->get();

You can use sub queries inside your main query Like this to calculate the sum

Like this -

$plans = Plan::all('*', DB::RAW("(SELECT SUM(amount) FROM transactions WHERE plan_id=plans.id ) as amount") );

This way you will already have sum when rendering in views