【发布时间】:2020-02-28 04:34:15
【问题描述】:
如何在不加载整个关系数据的情况下使用预加载获取相关模型的 SUM?
在我的项目中有两个模型,Account 和 Transaction。账户模型has many交易。
我的要求是:获取帐户并只在相关表上加载总和。
提供了我当前的代码:在此代码中,transactions 被急切加载,总和是使用 php 计算的。但我宁愿不加载整个交易。唯一的要求是sum('amount')。
表格:帐户
| id | name | address | ...
表:交易
| id | account_id | amount | ...
Account.php
/**
* Get the transaction records associated with the account.
*/
public function transactions()
{
return $this->hasMany('App\Models\Transaction', 'account_id');
}
以下代码给出了每个帐户及其交易。
$account = Account::with(['transactions'])->get();
SUM 的计算方法是:
foreach ($accounts as $key => $value) {
echo $value->transactions->sum('amount'). " <br />";
}
我尝试过类似的方法,但没有成功。
public function transactions()
{
return $this->hasMany('App\Models\Transaction', 'account_id')->sum('amount;
}
【问题讨论】:
标签: php laravel laravel-5.8