Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何计算模型laravel的belongsTo和_Php_Laravel - Fatal编程技术网

Php 如何计算模型laravel的belongsTo和

Php 如何计算模型laravel的belongsTo和,php,laravel,Php,Laravel,我需要得到laravel上的型号的金额总和 这是我的密码 控制器: $users = AffiliationUser::whereAffiliationId(Auth::user()->id) ->with(['user' => function ($q){ $q->withCount(['billings'])->with(['affiliation_transactions']); }]) ->paginate(3)

我需要得到laravel上的
型号的
金额总和

这是我的密码

控制器:

$users = AffiliationUser::whereAffiliationId(Auth::user()->id)
    ->with(['user' => function ($q){
        $q->withCount(['billings'])->with(['affiliation_transactions']);
    }])
    ->paginate(3);
//dd($users);
return view('affiliation.users', [
    'users'           => $users,
    'current_balance' => 0,
]);
用户模型:

public function user() {
    return $this->belongsTo('App\Models\Users');
}
public function billings() {
    return $this->hasMany('App\Models\UserBillingSchedules', 'user_id');
}

public function affiliation_transactions() {
    return $this->hasMany('App\Models\AffiliationTransaction', 'user_id');
}
用户模型:

public function user() {
    return $this->belongsTo('App\Models\Users');
}
public function billings() {
    return $this->hasMany('App\Models\UserBillingSchedules', 'user_id');
}

public function affiliation_transactions() {
    return $this->hasMany('App\Models\AffiliationTransaction', 'user_id');
}
视图:


我还可以使用哪一种解决方案?

您可以使用
withCount()计算总和。


Laravel允许您轻松创建自定义属性(在
模型中使用
get[attributename]Attribute
方法,该方法可用于减少需要编写的代码量。在这种情况下,您可以执行以下操作:

用户模型

public function getTransactionCountAttribute() {
  return $this->affiliation_transactions->sum('amount');
}
现在,可以在您的代码中使用以下方法来访问:

$user->user->transaction_count

此外,这里还有一点关于的信息,这些都是命名的。希望它们对您有用:)

在用户模型中创建一个类似以下的方法:

public function sum_amount() {
   return this.affiliation_transactions->sum('amount'); 
}
那么在你看来

{{ $user->user->sum_amount  }}

也这样做了,工作良好,但问题是,如果记录不存在,我得到的是null而不是一些默认结果,是的,不想使用“$user->user->amount或0”,因为我对laravel是新手,所以想找到最好的解决方案
{{ $user->user->sum_amount  }}