私は、ローン申請償却スケジュールを計算する方法を作成しました。私は、ユーザーが自分のローンの支払いをする必要があり、ここに私のコードの抜粋であるたびに、月に追加するにはカーボンを使用しています:Laravel 5.2を使用しているPHPとCarbonを正しく追加していない
public function amoritization($amount,$interest_rate,$repaid_months,$start_date)
{
$beginning_balance = $amount;
$interest = $interest_rate/100/12;
$payback = $repaid_months;
$x = pow(1 + $interest,$payback);
$monthly_payment = ($beginning_balance*$x*$interest)/($x-1);
$payment_date = new Carbon($start_date)
$info = (object)[]; //convert empty array to an object
$amoritization = [];
$count = 0;
while($payback > 0){
$total_interest = $interest * $beginning_balance; //interest
$principal_payment = $monthly_payment - $total_interest; //principal
$ending_balance = $beginning_balance - $principal_payment; //ending balance
$info->beginning_balance = (float)$beginning_balance;
$info->total_interest = $total_interest;
$info->payment = $monthly_payment;
$info->principal_payment = $principal_payment;
$info->ending_balance = $ending_balance;
$info->payment_date = $payment_date->addMonths($count++);
array_push($amoritization,$info);
$beginning_balance = $ending_balance;
$info = (object)[];
$payback--;
}
return $amoritization;
}
をこの方法では、このように私のコントローラに呼び出されます。
return $this->calculation->amoritization($data['amount'],$data['interest_rate'],$data['loan_term'],$data['start_date']);
ここに問題があります。たとえば、$ start_date変数にはこの値が格納されています。2016-04-14 10:34:56そして$ payback変数の値は6です。whileループ文には$ infoオブジェクトが追加されています追加月を保存するpayment_dateのプロパティ:
$info->payment_date = $payment_date->addMonths($count++);
whileループステートメントが1回ループするとき、私は得るべき値は2016-05-14です。私は戻って応答から得たものしかし、この:私はループ内でこれを行うと
payment_date :{date: "2016-10-14 10:34:56.247000", timezone_type: 2, timezone: "Z"}
はまた、:
return $info->payment_date;
私は価値2016年5月14日を取り戻します。これの原因は何でしょうか?あなたの助けを事前に感謝、
私はこの$ info-> payment_date = $ payment_date-> addMonths(1);を試しましたが、オブジェクトの配列から各payment_dateプロパティの2016-10-14という同じ日付を取得しています – newbieDev