Пытается получить свойство объекта, но я получаю «Пытаться получить свойство« статус »не-объекта» - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить данные определенного столбца и проверить, подтверждено ли состояние, выполнив его с помощью оператора 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 Illuminate\Database\Eloquent\Model;

class Transaction extends Model
{
    protected $guarded = [];

    public function user(){

        return $this->belongsTo('App\User');

    }
}

Ответы [ 3 ]

0 голосов
/ 14 мая 2019

Вы должны проверить, существует ли объект $ trans. Измените свой код на это:

 if(empty($trans) || (Auth::user()->transaction && !$trans->status)) {
        return redirect()->back()->with("error", "You currently have a withdrawal request pending confirmation");
    }
0 голосов
/ 14 мая 2019

после этой строки $trans = Transaction::where('user_id', Auth::user()->id)->orderBy('id', 'desc')->first(); Проверьте это `if ($ trans == '' || $ trans == null) { return redirect () -> back () -> with ("error", "Trans trans available"); }

0 голосов
/ 14 мая 2019

Прежде всего вам необходимо проверить, существует запись или нет. Используйте приведенный ниже код перед доступом к свойству status объекта и подтвердите, что вы получили данные из базы данных.

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

Причина ошибки в том, что данные не возвращены по вашему запросу. Переменная $ trans содержит ноль, поэтому вы получили ошибку Попытка получить свойство 'status' необъекта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...