Laravel - сообщение: «Попытка получить свойство first_name необъекта», исключение: «ErrorException» - PullRequest
0 голосов
/ 28 октября 2019

Я разрабатываю веб-приложение, используя Laravel-5.8 в качестве бэкэнда. У меня есть почтовый запрос, как показано ниже:

    public function storeClientQuote(Request $request)
    {
        $user = Auth::user();
        $userFirstName = Auth::user()->first_name;
        $userLastName = Auth::user()->last_name;
        $userEmail = Auth::user()->email;

        $dashboardowner = Client::join("users","users.client_id","=","clients.client_id")
                            ->select("clients.client_name", "users.id", "users.first_name", "clients.address1", "clients.address2")
                            ->where('users.id', $user->id) 
                            ->get();  

        if(!Auth::user()->hasPermissionTo('Add Quote'))
            return response()->json([ "message" => 'User do not have permission'], 401);
        $request->validate([
            'phone' => 'required|max:14',
          //  'business_name' => 'string',
            'truck_type' => 'required',
            'truck_required' => 'required',
            'quote_origin' => 'required',
            'quote_destination' => 'required',
            'commodity' => 'required',  
            'loading_date' => 'date|required' 
        ]);
        $clientquote = new ClientQuote;
        $clientquote->first_name= $userFirstName;
        $clientquote->last_name=$userLastName;
        $clientquote->email=$userEmail;
        $clientquote->phone=$request->get('phone');
        $clientquote->business_name= $dashboardowner[0]->client_name;
        $clientquote->address= $dashboardowner[0]->address1 . " " . $dashboardowner[0]->address2;
        $clientquote->truck_type=$request->get('truck_type');
        $clientquote->truck_required=$request->get('truck_required');
        $clientquote->quote_origin=$request->get('quote_origin');
        $clientquote->quote_destination=$request->get('quote_destination');
        $clientquote->commodity=$request->get('commodity');
        $loading_date=date_create($request->get('loading_date'));
        $format = date_format($loading_date,"Y-m-d H:i:s");
        $clientquote->loading_date = $format;
        $clientquote->save();


        return response()->json([
            'message' => 'Quote Successfully Sent!'
        ], 201);
    }

Когда я попытался отладить, я обнаружил, что ошибка началась с:

$ userFirstName = Auth :: user ()-> first_name;

с сообщениями:

сообщение: «Попытка получить свойство« first_name »не-объекта», исключение: «ErrorException»

Как мне решить?

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Это сообщение означает, что Auth :: user () возвращает ноль, что обычно происходит, если пользователь не вошел в систему. Сначала проверьте, вошел ли пользователь с помощью Auth::check(), прежде чем пытаться получить доступ к свойствам Auth::user()

. Если этот метод контроллера предназначен только для пользователя или вошел в него, вы можете установить Auth Middleware на маршруте, вызывающем метод контроллера,

И если предполагается, что весь контроллер доступен только зарегистрированному пользователю, установите Auth Middleware в методе построения контроллера.

Таким образом, вы всегда уверены, что авторизованный пользователь доступен, т. Е. Auth :: user () будет объектом

0 голосов
/ 15 ноября 2019

попробуйте

$user = auth()->user();
$userFirstName = $user->first_name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...