Laravel函数采用模型id vs函数采用模型本身

mklgxw1f  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(99)

我想知道什么应该是最好的方法,使功能:

function get_total_payment($payment_id){
   return PaymentModel::where('payment_id', $payment_id )->sum('amount');
}

function get_total_payment($payments){
    return $payments->sum('amount');
}

我认为第二种方法是在重构代码时保存我们的时间。
两种方法都有效,但我想知道利弊

ua4mk5z4

ua4mk5z41#

在我看来,我认为最好使用雄辩的范围,使总的工作在许多不同的情况下。见下面的例子:

function scopeGetTotalPayment($query){
     $query->sum('amount')
}

现在你可以为不同的情况实现它.看下面的例子:

//get the total amount of payments for the whole payments in the table
$totalPayment = PaymentModel::getTotalPayment();

//get the total payments for a specific user 
$totalPayment = PaymentModel::where('user_id', $userId)->getTotalPayment();

最后,这取决于您自己。您可以使用作用域,也可以坚持使用普通求和。我认为,在您的情况下使用作用域的附加值只是为了使名称清晰,并使其适用于特定的列。
阅读有关雄辩范围的更多信息:https://laravel.com/docs/9.x/eloquent#query-scopes

相关问题