Ошибка типа Не может получить доступ к смещению типа строка в строке

#arrays #laravel #database #session #typeerror

Вопрос:

Я сохранил данные пользователя из базы данных в сеансе, но когда я пытаюсь получить доступ к идентификатору пользователя через сеанс, он говорит, что не может получить доступ к смещению типа string в строке.

Функция, в которой я создал сеанс

 function loginUser(Request $req) {  $data = $req-gt;input(); //data entered by user in form   $email = $data['email'];// input email   $user_data = User::WHERE(["email" =gt; $email])-gt;first(); //original user data   if ($user_data == null || $user_data-gt;password != $req['password']) {  return "email or pass is wrong";  } else {  $req-gt;session()-gt;put("user", '$user_data');   return redirect("/");  } }  

Код, в котором я пытаюсь получить доступ к идентификатору из сеанса

 function addCart(Request $req) {  if (session()-gt;has("user")) {  $product_id = $req-gt;product_id; //product_id via form  $user_id = session()-gt;get("user")['id']; //user_id via session    $cart = new Cart;  //assigning data to db columns  $cart-gt;product_id = $product_id;  $cart-gt;user_id = $user_id;  $cart-gt;save();   return redirect("/");  } else {  return redirect("/login");  } }  

Комментарии:

1. удалите кавычки из $user_data в $req-gt;session()-gt;gt;put(«пользователь», «$user_data»); используйте без кавычек, т. е. $req-gt;gt;gt;session()-gt;gt;gt;gt;put(«пользователь», $user_data);

2. Просто из любопытства, почему вы не используете одну из собственных систем аутентификации Laravel?

3. Исследование промежуточного программного обеспечения auth (вместо изобретения колеса)