如何在关系模型类中进行计算并接收清晰的数据

时间:2018-02-24 11:55:11

标签: sql laravel eloquent foreign-keys relation

我有这个对象,你可以看到我按不同的变量排序

$banks = Bank::with('credits')->with('deposits')->with('bank_assets')->with('atms')->get()->sortByDesc($sort);

所以我在我的模型中有关系,例如bank_assets(信用和存款工作清楚,我可以按存款或信用分类) 但是bank_assets!没有 在这种情况下,我需要按需要计算的活动进行排序。 因为Actives这是此表http://prntscr.com/ij3idg中不同ammounts的汇总 在我的模型关系中,我得到的对象不是这个数量的总和 如你所见

//Bank Model
    public function bank_assets()
    {

        return $this->hasMany('App\BankRating')->where('type','assets');
    }

但是我需要按活跃数排序,这是不同金额的总和 请帮助我并解释我如何排序

1 个答案:

答案 0 :(得分:0)

试试这个,这会根据$sort关系中的ammount参数和bank_assets属性进行排序:

$banks = Bank::with([
    'credits',
    'deposits',
    'bank_assets'
    'atms',
])->get()->sortByDesc(function($bank) use ($sort) {
    if($sort == 'actives') {
        return $bank->bank_assets->sum('ammount');
    }
    return $bank->$sort;
});
希望这有效。 ;)