'Error: Unsupported operand types: Illuminate\Database\Eloquent\Collection - int
I have this code where i both insert data into a table as well as the data for arithmetic operation.
public function Repay (LoanApplication $loanApplication, transLog $transaction, Request $request) {
abort_if(!Auth()->user()->is_admin, Response::HTTP_FORBIDDEN, '403 Forbidden');
$data['Loan_id'] = $loanApplication->id;
$data['Cust_id'] = $loanApplication->cust_id;
$data['trans_type'] = "Credit";
$data['Amount'] = $request['Amount'];
transLog::create($data);
$transact = $transaction::where('Loan_id', $loanApplication->id);
$curr_amount = $transact->Where('trans_type', '=', 'debit')->get('Amount');
$curr_repayment = $transact->where('trans_type', '=', 'credit')->sum('Amount');
$bals = $curr_amount - $curr_repayment;
if($bals == 0){
$loanApplication->update([
'status_id' => 18
]);
return view('admin.loanApplications.index', compact('loanApplication', 'transact'))->withMessage('Repayment Successful!');
}
The create function is working but i get an error above at the line
$bals = $curr_amount - $curr_repayment;
Any idea why this is?
Solution 1:[1]
$curr_amount = $transact->Where('trans_type', '=', 'debit')->get('Amount');
The get()
statement here always returns an array.
$curr_repayment = $transact->where('trans_type', '=', 'credit')->sum('Amount');
The sum()
statement returns a number (int or float).
So obviously these 2 operands cannot be added together.
Also you should probably define $transact
like so since you are abusing the $transaction
variable as a query instance, while it seems to refer to a model:
$transact = transLog::query()->where('Loan_id', $loanApplication->id);
(And also refactor your code to use CamelCase: TransLog
)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Flame |