我正在尝试在我的应用程序中运行一些,我没有得到预期的结果,所以我决定通过在我的控制器中在函数内逐行注释代码来跟踪错误的来源。我终于把它缩小到了这个区域:
DB::beginTransaction();
try
{
// Getting mpower transaction record
$payment = PaymentTransaction::select('id', 'invoice_reference_code', 'transaction_token')
->where('transaction_token', $transaction_token)
->where('is_verified', 0)
->first();
// If found, setting transaction to verified
$payment->is_verified = 1;
$payment->save();
// Getting purchase invoice details
$invoice_details = InvoiceDetails::where('reference_code', $payment->invoice_reference_code)
->where('is_verified', 0)
->first();
// If found, setting invoice to verified
$invoice_details->is_verified = 1;
$invoice_details->save();
DB::commit();
}
catch (\Exception $e)
{
return [
'code' => 300,
'message' => $e->getMessage(),
'data' => []
];
}
抛出的错误是:
从空值创建默认对象
这一行似乎引发了错误:
$invoice_details->is_verified = 1;
我检查了$payment
,确实返回了数据。
我真的不知道我在这里失踪了什么。
答案 0 :(得分:3)
请检查查询是否已将结果返回到$ invoice_details。如果它已返回空,则同样初始化一个对象:
$invoice_details = new InvoiceDetails;
然后尝试调用保存功能。