尝试获取对象属性,但我得到了"Trying to get property 'status' of non-object"



我正在尝试获取特定的列数据,并通过通过if语句运行来确认状态,但我得到了"尝试获得非 - 的属性'状态'对象"错误

这是我的控制器;

public function transaction(Request $request){
        request()->validate([
            'amount' => 'required'
        ]);
        $trans = Transaction::where('user_id', Auth::user()->id)->orderBy('id', 'desc')->first();
        if(Auth::user()->transaction && !$trans->status){
            return redirect()->back()->with("error", "You currently have a withdrawal request pending confirmation");
        }
        if($request->input('amount') > Auth::user()->balance){
            return redirect()->back()->with("error", "Insufficient balance to complete request");
        }
        Mail::to('mail@gmail.com')->send(new transaction($request));
        $transaction->save();
        return redirect()->back()->with("success", "Your withdrawal request has successfully been received");

    }

我的交易模型;

namespace App;
use IlluminateDatabaseEloquentModel;
class Transaction extends Model
{
    protected $guarded = [];
    public function user(){
        return $this->belongsTo('AppUser');
    }
}

首先,您需要检查记录是否存在。在访问对象上的状态属性之前,请使用以下代码,并确认您已从数据库中收到数据。

if(!$trans) {
    return abort(404); // record does not exists
}

错误的原因是您的查询未返回数据。$ trans变量包含null,这就是您获得错误的原因

您应该检查$ trans对象是否存在。更改您的代码:

 if(empty($trans) || (Auth::user()->transaction && !$trans->status)) {
        return redirect()->back()->with("error", "You currently have a withdrawal request pending confirmation");
    }

此行之后 $trans = Transaction::where('user_id', Auth::user()->id)->orderBy('id', 'desc')->first();检查一下`if($ trans ==''|| $ trans == null({返回redirect(( -> back(( -> with(" error"," no trans"(;}

相关内容

最新更新