我有一个laravel应用程序,它有一个模型Client。
客户有很多地址,很多工作和很多交易。
我的客户端模型上有以下关系:
public function jobs()
{
return $this->hasMany('App\Job','client_id');
}
public function addresses()
{
return $this->hasMany('App\Address','client_id');
}
public function Fees()
{
return $this->hasMany('App\Transaction','client_id');
}
然后我在该模型上有另一个函数来计算值
public function balance()
{
return $this->Fees()->where('status',2)->sum('gross');
}
我正在尝试返回所有客户的列表以及他们的地址,工作和每个客户的余额。
我尝试了以下内容:
$customers = $user->clients()->with('balance')->with('jobs')->with('addresses')->get();
我收到以下错误
在字符串
上调用成员函数addEagerConstraints()
毫无疑问,这将是eagerloading和balance()不是一个集合的事实,但我想知道如何在不必循环构建数组的情况下实现相同的结果。
答案 0 :(得分:0)
您可以在条件中使用条件,如下所示
$customers = $user->clients()
->with(['jobs', 'addresses'])
->with(['Fees'=> function($query){
$query->selectRaw('sum(fees_table_name.gross) as gross')
->where('status',2);
}])
->get();