Laravel 5.5 загружает только данные для текущего пользователя - PullRequest
2 голосов
/ 07 апреля 2019

Привет, я новичок в laravel, но я хотел бы загрузить все заказы для текущего пользователя.

Я пытался сделать это

   //check if user is logged in
     if ($user = Auth::user()) {  
       //get only the bookings for the currently logged in user
        $allProducts =Booking::where('client', Auth::user()->name)->where('name', $name)->first();
        //store the bookings in a products variable
        $products = json_decode(json_encode($allProducts));
      //Loop through the products:
        foreach ($products as $key => $val) {
            //get the name of the service by matching it's id in the service model to the service column in the products
            $service_name = Service::where(['id' => $val->service])->first();
      //get the charge amount of the service by matching it's id in the Charge model to the charge column in the products
            $service_fee = Charge::where(['id' => $val->charge])->first();
          //get the status of the service by matching it's id in the status model to the status column in the products
            $service_status = Status::where(['id' => $val->status])->first();
            $products[$key]->service_name = $service_name->name;
            $products[$key]->service_fee = $service_fee->total;
            $products[$key]->service_status = $service_status->name;
        }
        return view('client.booking.view_bookings')->with(compact('products'));
    }
    return view('/login');
}

Но это дает мнеошибка: неопределенная переменная: имя в строке

       $allProducts =Booking::where('client', Auth::user()->name)->where('name', $name)->first();

Что я могу делать не так?и как я могу решить это dsplay только необходимые данные

1 Ответ

1 голос
/ 10 апреля 2019

Я пытался понять, что вы делаете без успеха, но из ваших объяснений в комментариях я думаю, что знаю, что вы хотите сделать.

Поскольку вы сказали, что этот код хорошо работает для вас, за исключением того, чтоон дает вам результаты всех данных в базе данных независимо от того, вошел ли пользователь в систему

    $allProducts = Booking::get();

, потому что это создает запрос, который выбирает все данные в базе данных.

Whatvвам нужно добавить пункт where к вашему утверждению.чтобы сделать это, просто добавьте это в приведенную выше строку кода

    where('client', Auth::user()->name)

, и он вернет только те данные, которые содержат столбец клиента, равный имени текущего пользователя, вошедшего в систему.

Поэтому вся строка кода становится такой:

    $allProducts = Booking::get()->where('client', Auth::user()->name);

В качестве альтернативы вы можете использовать фильтры

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