我正在尝试获取特定的列数据,并通过通过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"(;}